自定义语言和页面redux触发问题

来源:11-4 自定义标签与标签移除功能实现【边学边做】

Leonard_

2019-01-03

老师,页面的redux dispatch函数不是每次打开页面都执行?
我是这样操作的,刷新app,第一次打开自定义语言,如下图两个断点都执行了
图片描述
图片描述
接着点击一个未选中的语言,因为js的浅拷贝,执行完onClick方法,props和state里的keys对应的该语言的checked都变为true了,我再点击返回按钮,选择否(不保存),返回我的页面,再点击自定义语言进来,构造方法是走的,但是上图两个方法都不走了,上次选择的没保存的语言也是选中状态,因为props里该语言的checked是true,搞不懂这是啥原理啊,为啥重新打开页面props没有重置,redux也没执行

写回答

1回答

CrazyCodeBoy

2019-01-03

为什么第一次走了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了哈。

0
0

RN入门到进阶,打造高质量上线App

解锁React Native开发应用新姿势,React Native新版本热门技术

3144 学习 · 3241 问题

查看课程