【发布时间】:2019-11-05 12:13:03
【问题描述】:
我正在尝试学习 React JS,并且正在从事个人项目。我被卡住了,因为我无法将子组件中输入字段的值传递给父组件的状态。
我尝试使用 onChange 事件,但由于某种原因,它调用的函数 handleChange 没有被触发。
这是来自父组件的 sn-p:
class App extends Component {
state = {
myArray: [{ //myArray is being updated by another child component, which sets the values for id and amount; this works fine
id: 1,
amount: 12
},
{
id: 2,
amount: 23
}
]
total: 0 //expected value for total is 35
};
handleChange = e => {
const { name, value } = e.target
this.setState({
[name]: value
});
}
render() {
return (
<Child
handleChange={this.handleChange}
myArray={this.state.myArray} />
)
}
}
这是来自 Child 组件的 sn-p:
class Child extends Component {
render() {
const { myArray, handleChange } = this.props;
const totalAmount = myArray.reduce(function (a, b) {
return a + b.amount;
}, 0);
return (
<div>
<label htmlFor="total"> Total Amount: </label>
<input id="total"
name="total"
type="number"
placeholder="0.00"
value={totalAmount}
onChange={e => handleChange(e)}
/>
</div>
)
}
}
总输入字段的值正确呈现。 但是,我想要实现的是每次更改此输入字段值时(当其他子组件更新 myArray 值并因此总和也发生更改时),我希望更新父组件状态下的总值。
【问题讨论】:
-
这里是一个沙盒。请帮忙:(codesandbox.io/s/quiet-framework-cu0gb?fontsize=14
标签: javascript reactjs