在使用 mobxmobx-react 出现错误分析及解决方案

1
2
3
Uncaught TypeError: Cannot read property 'componentWillReact' of undefined
at eval (mobx-react.module.js?90c4:1)
at W (mobx-react.module.js?90c4:1)

情况一

使用 React.memo 造成,出现这种情况大多是在 mobx-react v6.1.0 , 此时只需要升级或降级 mobx-react 版本即可

参考 issues : ‘componentWillReact’ of undefined after updating to 6.1.0

情况二

使用 @observer 后出现该错误,解决方案是将 babel 插件 @babel/plugin-proposal-decoratorslegacy 参数设置为 true, 同时设置 @babel/plugin-proposal-class-properties 插件的 loose 参数设置为 true

注意

  • @babel/plugin-proposal-decorators 插件 启用 legacy 模式下不能启用 decoratorsBeforeExport (既不能设置为 true 也不能设置为 false),否则会出现错误如下: ‘decoratorsBeforeExport’ can’t be used with legacy decorators.

配置参考

1
2
3
4
5
6
{
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose" : true }]
]
}