【发布时间】:2020-02-29 15:16:42
【问题描述】:
从受控表单元素存储数据后,我想将输入类型的值重置为空。 在下面的这个方法中,setState 没有将其设置为空。不知道为什么。
handleSubmit = event => {
event.preventDefault();
this.props.dispatch(passengerActions.addPassenger(this.state.passenger));
this.setState({ ...this.state.passenger, firstName: "", lastName: "" });
};
以下方法有效
handleSubmit = event => {
event.preventDefault();
this.props.dispatch(passengerActions.addPassenger(this.state.passenger));
const passenger = {
...this.state.passenger,
firstName: "",
lastName: ""
};
this.setState({ passenger });
};
请帮助我理解为什么第一种方法不起作用。我是 ReactJS 的新手。
【问题讨论】:
-
他们不做同样的事情。目前尚不清楚您需要什么样的状态形状,但第二个示例将新的空字符串存储为
this.state.passenger.firstName(等),而第一个示例直接在this.state.firstName -
顺便提一下,您不应该在
setState中直接引用this.state。您应该改为传递一个函数 - 请参阅文档here
标签: javascript reactjs