ant-design / antd-mobile-samples

antd-mobile samples
1.14k stars 1.09k forks source link

使用了flex布局的组件在老版本ios系统上显示不正常 #52

Open and218 opened 6 years ago

and218 commented 6 years ago
tuihou123321 commented 6 years ago

我也遇到这个问题

wengqi commented 5 years ago

在config-overrides.js注意以下几个关键点: 1、使用config.module.rules[1].oneOf.push,注意是push而不是unshift 2、配置中的browsers增加一项'iOS >= 8' 3、为了防止出现报错请在文件最开始增加 const autoprefixer = require('autoprefixer'); 否则会出现autoprefixer未定义。 只要检查下以上三点,其余都可以照搬此项目示例中的配置。

详细解释如下: 如果你去看creat-react-app默认隐藏在/node_modules/react-scripts/config/webpack.config.prod.js或webpack.config.dev.js中的配置,你会发现我们在config-overrides.js写的config.module.rules[1].oneOf.push其实是在往webpack.config.prod.js或者webpack.config.dev.js的module对象的rules数组中增加一项规则,而特别重要的是webpack在执行这个数组中的规则时,不是按照你配置的从前往后的顺序执行的,而且从后往前执行,而且oneOf意思是执行第一次匹配到的规则,即假如有两条规则同时匹配,只会执行第一次匹配的,忽略第二条。所以我们在config-overrides.js配置的规则要想覆盖默认配置,必须push到rules数组最后,使用unshift是不能覆盖的。碰巧的是less规则在默认配置中没有,所以无论是push还是unshift都无所谓,但是css规则就没那么幸运了,因为默认规则是有css这条规则的,所以无论你在config-overrides.js如何修改,其实都没有被执行,还是走的creat-react-app的默认配置。 对于:配置中的browsers增加一项'iOS >= 8' 这就不做详细说明了,让ios系统降低到8以上就是让autoprefixer增加-webkit-flex。 希望对你有帮助,如果还是不正确可以联系我。