首页 > 解决方案 > 如何使用 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 });
    }
  }

标签: javascriptreactjsecmascript-6

解决方案


你不应该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 };
  }
}

推荐阅读