- 如果 state 里有 数组或对象类型需要用 immutable 转成 list 或者 map 吗?
- 对于自定义类实例,immutable 好像不会转换,这时候还是可以 通过 obj.xx 进行操作,这个需要处理吗?
- 因为现在没有 componentWiiReciveProps 这个钩子了,所以如果我想实现 某个 list 更新时进行一些操作,会采用 通过 state 存储一份 数据,然后用 static getDerivedStateFromProps 进行比较,如果发现不一样,就在 componentDidUpdate 就行更新等操作,这个做法正确吗?
这里用 immutable 的 is 方法深比较还是 直接采用 === 比较好一些,因为 immutable 类型数据改变肯定会改变地址。
static getDerivedStateFromProps(props, state) {
// 判断数据是否发生改变,需要刷新
if (props.data !== state.data) {
return {
data: props.data,
isNeedRefresh: true,
};
}
return null;
}
componentDidUpdate() {
if (this.state.isNeedRefresh === true) {
this.refresh();
}
}
refresh() {
// do something
this.setState({isNeedRefresh: false})
}