最近学习用react开发一个后台系统,要求有多窗口功能,我是打算用antd的tabs来模拟。现在遇到一个问题,就是在我删除最后一个tab时无法触发redux。
tabList.js
点击左边的菜单会生成对应的tab标签,这个过程分别会发一个action给redux生成新的state返回给组件,同时也会把相关数据保留到localstorage中,处理刷新页面当前tab还在。当标签页有多个时,点击删除正常删除。但当只剩最后一个标签,点击删除,页面上的标签页被删除了,但没触发componentDidUpdate。导致我拿不到最新的state,也就无法存入localstorage中。刷新页面后始终有一个tab标签。
点击删除按钮触发remove方法。该方法会把一个关键key传入reducer中
上图的console.log在删除最后一个tab时不触发。
reducers.js
点击删除action.type为REM_tabList,接收到一个key同state中的数据对比,key相同则删除对应数据。此时当state为[]时,在reducers.js中答应state能正常打印出[],而tabList.js中的mapStateToProps中的console.log(state)却未执行。
ps:尝试了使用在connect()()中使用深对比也没用。
你直接改变了原来的reducers里的state的引用,redux检测不到变化了吧
直接
试试