1. 使用解构方法操作一个深层的对象,再setState,可能不会触发render(ios以及Android模拟器和真机调试都正常,只有打包发布之后Android有这个问题)。

...
/* React
state = {
    data: {
        '2019-07-19': {...},
        '2019-07-20': {...},
    }
}
*/
const data = this.state.data;
// 待解构的数据源
const obj = {
    some_attr: 'test',
    other: {
        sex: 'man',
    }
}
// 被用来setState的临时数据
const data_tmp = {
    name: '张三',
    age: 18,
    ...obj.other
}
data['2019-07-19'] = data_tmp
this.setState({
    data
})
// 这种情况会导致上述情况
// 解决办法 不使用解构  使用for in 把属性插入
const data_tmp = {
    name: '张三',
    age: 18
}
for(key in obj.other) {
    data_tmp[key] = obj.other[key]
}
data['2019-07-19'] = data_tmp
this.setState({
    data
})
上述问题有点奇怪,暂时不明原因,查明原因会补充真想,有大神知道原因评论区交流^_^

2. 多个setState同步执行也会导致不触发render(ios以及Android模拟器和真机调试都正常,只有打包发布之后Android有这个问题)。

[1,2,3].forEach(item, () => {
    this.setState({
        data: {...}
    })
})
和第一个问题差不多,也是导致Android实体机有问题

有更多坑的同学的可以一起分享交流,后续会持续更新...


zhuqitao
498 声望80 粉丝

心有猛虎,细嗅蔷薇