将输入子对象提升为父对象

时间:2019-02-14 17:04:42

标签: reactjs react-props

我的问题是我想将输入子级提升为父级对象。 但是,无论何时输入,它都不会保存到我的状态。 认为问题出在pkp[index].Sasaran += question.Sasaran;中,我应该如何编写该代码。请帮助我。.

父组件

 constructor(props) {
    super(props);
    this.state = {
      selectedOption: [],
      selectedOption2: [],
      pkp: []
    };
   } 
handleChange = question => {
    const pkp = [...this.state.pkp];
    const index = pkp.indexOf(question);
    pkp[index] = { ...question };
    pkp[index].Sasaran = question.Sasaran;
    this.setState({ pkp });
    console.log(this.state.pkp);
  };

这是我的孩子部分

      <tr>
        <td>{this.props.question.SubVariabel}</td>
        <td>
          <input
            name="sasaran"
            type="number"
            onChange={() => this.props.onChange(this.props.question)}
          />
        </td>
        <td>
          <input
            name="capaian"
            type="number"
            onChange={() => this.props.onChange(this.props.question)}
          />
        </td>
      </tr>

1 个答案:

答案 0 :(得分:0)

该值可能实际上正在更新。

const pkp = [...this.state.pkp];
  const index = pkp.indexOf(question);
  pkp[index] = { ...question };
  pkp[index].Sasaran += question.Sasaran;
  this.setState({ pkp });
  console.log(this.state.pkp);
};

console.log(this.state.pkp)将不会显示新状态。 setState不是立即的。在状态显示之前,组件需要使用新值重新渲染。在其他地方(例如在渲染中)检查该值,也许更新将正确显示。

以下是有关setState如何在后台工作的更多详细信息:https://reactjs.org/docs/react-component.html#setstate