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

raising input child to parent Object

我的问题是我想将我的输入子对象提升为父对象。 但是每当我键入输入时,它都不会保存到我的状态。 认为问题出在 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>

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

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