Reactjs 将对象绑定到react中的多个事件
在这里回答新手问题: 我得到了一个带有多个过滤器作为复选框的搜索表单。现在,在react中,我理解您必须将复选框的onChange事件绑定到事件处理程序。由于可能有10个以上的复选框,我想将这些复选框的结果放在一个过滤器对象中,如下所示:Reactjs 将对象绑定到react中的多个事件,reactjs,Reactjs,在这里回答新手问题: 我得到了一个带有多个过滤器作为复选框的搜索表单。现在,在react中,我理解您必须将复选框的onChange事件绑定到事件处理程序。由于可能有10个以上的复选框,我想将这些复选框的结果放在一个过滤器对象中,如下所示: this.state = { categoryFilter: { hr: false, ict: false, finance: false, sales: false, marketing: false } }
this.state = {
categoryFilter: {
hr: false,
ict: false,
finance: false,
sales: false,
marketing: false
}
};
理想情况下,我希望将状态的categoryFilter直接绑定到组件
比如:
<MyCheckBox onChange={() => myEventHandler('finance')} label="finance"/>
myEventHandler(name) {
switch(name) {
case: 'finance':
this.props.categoryFilter.finance = true;
this.props.onCategoryChanged();
}
}
myEventHandler('finance')}label=“finance”/
迈文坦德勒(姓名){
交换机(名称){
案例:“金融”:
this.props.categoryFilter.finance=true;
this.props.onCategoryChanged();
}
}
正如我所说,我是一个新的反应者,所以可能有更好的解决方案,但是从angular的角度来看,我真的缺少这里的数据绑定
所以问题是如何将categoryFilter对象绑定到组件,反应方式?嘿,看看官方文档提供的这个解决方案。下面的代码使用单个函数来处理所有输入更改
class Reservation extends React.Component {
constructor(props) {
super(props);
this.state = {
isGoing: true,
numberOfGuests: 2
};
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value
});
}
render() {
return (
<form>
<label>
Is going:
<input
name="isGoing"
type="checkbox"
checked={this.state.isGoing}
onChange={this.handleInputChange} />
</label>
<br />
<label>
Number of guests:
<input
name="numberOfGuests"
type="number"
value={this.state.numberOfGuests}
onChange={this.handleInputChange} />
</label>
</form>
);
}
}
类保留扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
是的,
宾客人数:2
};
this.handleInputChange=this.handleInputChange.bind(this);
}
handleInputChange(事件){
const target=event.target;
const value=target.type=='checkbox'?target.checked:target.value;
const name=target.name;
这是我的国家({
[名称]:值
});
}
render(){
返回(
将要:
嘉宾人数:
);
}
}
您可以试穿,或者如果您想了解更多详细信息,可以查看。您可以这样做
<MyCheckBox onChange={myEventHandler.bind(this, 'finance')} label="finance"/>
myEventHandler(name) {
const newCategoryFilter = Object.assign(
{},
this.state.categoryFilter,
{ [name]: !this.state.categoryFilter[name]}
);
this.setState({
categoryFilter: newCategoryFilter,
});
this.props.onCategoryChanged();
}
迈文坦德勒(姓名){
const newCategoryFilter=Object.assign(
{},
this.state.categoryFilter,
{[name]:!this.state.categoryFilter[name]}
);
这是我的国家({
categoryFilter:newCategoryFilter,
});
this.props.onCategoryChanged();
}
当您取消选中复选框时,这也会处理这种情况