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