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