代码在这里:https://codesandbox.io/s/gith...简单描述:这是跟着redux文档学习的一个例子,开始使用redux+react-redux实现,且功能正常。之后使用了redux+react-router-dom,并把使用connect的两个容器型组件换成了普通函数组件(见代码里的containers文件夹下的FilterLink.js->RouteLink.js和VisibleTodoList.js->RouteTodoList.js),其他代码基本没改动,然后就出现了dispatch后store更新但是不触发渲染的问题(新增todo,或者点击todo以完成都需要切换下面的按钮来触发更新)。Google大都是涉及connect然后用withRouter来解决这样的,但我这里没有用connect,希望有大佬能指出错误的地方,谢谢了!!!
2 回答
慕后森
TA贡献1802条经验 获得超5个赞
问题出现的原因:组件没有setState!!!(还是理解不够透彻)解决方法:给容器型组件一个父组件,负责两个事情,一是接收store并订阅这个store更新(用来setState),二是向其容器型子组件传递state和dispatch——connect的雏形就这样出来了。如果将这个父组件封装为高阶组件,并且给子组件只传递其需要的props(通过调用mapState和mapDispatch),这应该就是乞丐版的connect了吧
添加回答
举报
0/150
提交
取消