Semantic-UI-React Menu组件报错:TypeError: instance.render is not a function
嘿,我帮你定位到问题了——这是依赖版本不兼容导致的,咱们一步步来解决:
问题根源
你用的semantic-ui-react@0.80.1对React版本有最低要求,而你的项目里react@16.4.0版本太低,跟不上组件内部的API需求,才会抛出instance.render is not a function这种渲染错误。
查了下semantic-ui-react 0.80.x的官方要求,它需要React至少16.6.0以上(因为用到了React.memo这类16.6才新增的特性),而16.4.0完全不支持这些,直接导致组件初始化失败。
两种可行的解决办法
办法1:升级React及相关依赖
修改你的package.json,把react、react-dom升级到符合要求的版本,顺便也升级下react-scripts避免其他潜在问题:
"dependencies": { "react": "^16.6.0", "react-dom": "^16.6.0", "react-scripts": "3.4.4", "semantic-ui-react": "^0.80.1" }
然后执行以下命令重新安装依赖:
rm -rf node_modules package-lock.json npm install
办法2:降级Semantic-UI-React到兼容版本
如果你不想升级React,可以把semantic-ui-react降级到支持React 16.4.x的版本,比如0.79.1(这个版本兼容React 16.0+):
"dependencies": { "react": "^16.4.0", "react-dom": "^16.4.0", "react-scripts": "1.1.4", "semantic-ui-react": "^0.79.1" }
同样删除旧依赖后重新安装:
rm -rf node_modules package-lock.json npm install
验证步骤
调整完依赖后,重启开发服务:
npm start
这时候你的Menu组件示例代码应该就能正常渲染,不会再出现那个讨厌的错误了。
另外提个小建议:你的Node.js 10.0.0和npm5.6.0版本确实有点老,虽然不是这次问题的直接原因,但长期用的话建议升级到更稳定的LTS版本(比如Node 14或16),能避免很多后续的依赖兼容问题。
内容的提问来源于stack exchange,提问作者Sonny Bonds
相关产品推荐
相关产品推荐

