javascript - 如何使用 getDerivedStateFromProps 使用 React setState 方法?
问题描述
在我的代码中,我使用componentWillReceiveProps
的是我知道已被弃用的,但我的代码使用该方法似乎工作正常。这就是我所拥有的:
componentWillReceiveProps(nextProps) {
if(nextProps.tableData !== undefined) {
const data = nextProps.tableData.datapaths.map(item => { return item.row });
this.setState({ data });
}
}
有人可以告诉我如何将相同的逻辑应用于该方法,因为当我尝试在此方法getDerivedStateFromProps
中使用方法时它不喜欢并抱怨:setState
static getDerivedStateFromProps(props, state) {
if (props.tableData !== undefined) {
const data = props.tableData.datapaths.map(item => { return item.row });
state.data = data;
this.setState({ data });
}
}
解决方案
你不应该setState
进去getDerivedStateFromProps
,只需返回新状态:
static getDerivedStateFromProps(props, state) {
if (props.tableData !== undefined) {
const data = props.tableData.datapaths.map(item => { return item.row });
// this will update the state
return { data };
}
}
推荐阅读
- python - 如何从给定数组中找到子集的最大和。(子集不能没有大于任何两个元素之和的元素)
- excel - Robot框架中表格和excel的列表长度不同
- java - 如何使用 gradle 创建环境特定的 Spring Boot jar 文件名
- android - 如何在 Android TV 的 ListItemPresenter 中删除默认阴影
- laravel - Vuex/Laravel 将参数传递给动态 url
- javascript - 为什么按钮对象不能使用 onclick() 函数?
- mysql - 查询mysql总是返回重复的结果
- google-cloud-platform - 如何在调用时间序列 API 时获取 GCP 资源(如 VM 实例)的自定义标签
- c# - 在 Xamarin 中更改密码确认时的 IsEnabled 和 IsVisible
- apache-kafka - 执行所有配置时 Zookeeper 身份验证不起作用