webpack编译后,代码中判断子组件名称功能失效。
因为压缩后函数名称混淆,所以不能通过typeof child.type === 'function' && child.type.name === 'FormControl'
,而是应该通过child.type === FormControl
当input框输入值时输入框自动被失去了焦点,原因是在render函数里又用了render。
参考网址:https://stackoverflow.com/questions/25385578/nested-react-input-element-loses-focus-on-typing
input值不会随着属性改变而改变
1 | <Parent> |
当Child
组件的value
为null
后input的值不会更改。所以一般要判断是否存在null
值:
1 | <FormControl value={this.props.inputVal || ''}/> |
UglifyJs编辑后有些arguments无效
升级uglifyjs-webpack-plugin和uglify-js:
1 | "uglify-js": "^3.1.6", |
上传文件不能上传同一张图片
在上传完成后,设置$('input').val('')
即可。
react中ref
传递给页面组件时失效
比如如下代码:
1 | let Component = require(`./${item.componentName}/index.js`).default; |
这时,使用ref
是无效的,这时因为包装了withRouter
导致ref失效,应该使用wrappedComponentRef
,获取时使用如下语句获取:
1 | this.a |
在react组件中引入样式文件导致echarts宽度计算失败的bug
比如下面:
1 | <div className="box"> |
box
中的left
、right
各占50%
(样式写在样式文件内),这时候渲染echarts的时候,因为样式文件还未生效,所以Echarts读取的left
和right
宽度是100%
的。
这个是为什么呢?
修改react子组件
1 | return React.Children.map(this.props.children, child => { |
使用react-css-modules后的问题
使用react-css-modules后会导致antd的Picker不能滑动选择(setState会一直触发componentWillReceiveProps)。所以改成babel-plugin-react-css-modules
,配置如下:
1 | plugins: [ |