gpt4 book ai didi

javascript - 在调用 onSubmit 时 react 如何绑定(bind)到组件

转载 作者:行者123 更新时间:2023-11-30 15:02:55 26 4
gpt4 key购买 nike

在我的组件中,我尝试调用组件的 handleChange 和 handleSubmit 函数

如果我像 forms example 那样渲染,

    <form onSubmit={this.handleSubmit}>
<input type="text" value={this.state.value} onChange={this.handleChange} placeholder="Enter new title"/>
<input type="submit" value="Submit" />
</form>

在onChange()中,this不会绑定(bind)到组件上,我也无法调用this.setState,所以我用onChange={绑定(bind)() => this.handleChange}.

对于onSubmit(),我有同样的绑定(bind)问题,但是当我绑定(bind)它时,处理程序没有被调用,页面被重新加载。提交时绑定(bind)到组件的正确方法是什么?

TIA

完整示例:

class CbList extends React.Component {
constructor() {
super();
this.state = {
newTitle: '',
list: []
};
}

handleChange(event) {
this.setState(Object.assign({},
this.state,
{ newTitle: event.target.value }));
}

handleSubmit(event) {
this.addBlock(this.state.newTitle);
event.preventDefault();
return false;
}

render() {
return (
<div className="cb-list">
<div>
<form onSubmit={() => this.handleSubmit}>
<input type="text" value={this.state.value} onChange={() => this.handleChange}
placeholder="Enter new title"/>
<input type="submit" value="Submit" />
</form>
</div>
</div>
);
}

addBlock(title) {
let updatedList = this.state.list.concat({ title: title });
this.setState({ list: updatedList })
}
};

$(function() {
ReactDOM.render(<CbList/>, $('#home').get(0));
});

最佳答案

您忘记调用函数:

onSubmit={()=>this.handleSubmit}

应该是

onSubmit={()=>this.handleSubmit()}

或者,只传递对函数的引用:

onSubmit={this.handleSubmit}

但您需要在构造函数中绑定(bind)您的函数(如表单示例链接所示):

this.handleSubmit = this.handleSubmit.bind(this);

关于javascript - 在调用 onSubmit 时 react 如何绑定(bind)到组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com