自定义语言和页面redux触发问题
来源:11-4 自定义标签与标签移除功能实现【边学边做】
Leonard_
2019-01-03
老师,页面的redux dispatch函数不是每次打开页面都执行?
我是这样操作的,刷新app,第一次打开自定义语言,如下图两个断点都执行了
接着点击一个未选中的语言,因为js的浅拷贝,执行完onClick方法,props和state里的keys对应的该语言的checked都变为true了,我再点击返回按钮,选择否(不保存),返回我的页面,再点击自定义语言进来,构造方法是走的,但是上图两个方法都不走了,上次选择的没保存的语言也是选中状态,因为props里该语言的checked是true,搞不懂这是啥原理啊,为啥重新打开页面props没有重置,redux也没执行
写回答
1回答
-
为什么第一次走了onLoadLanguage,第二次没走了呢,从下面的代码中可以找到答案哈:
componentDidMount() { this.backPress.componentDidMount(); //如果props中标签为空则从本地存储中获取标签 if (CustomKeyPage._keys(this.props).length === 0) { let {onLoadLanguage} = this.props; onLoadLanguage(this.params.flag); } this.setState({ keys: CustomKeyPage._keys(this.props), }) }
如果props中标签为空则从本地存储中获取标签,第二次进去的时候redux 的store中已经有language的数据了,所以就不需要在重新onLoadLanguage了哈。
00
相似问题