Reactjs 将对象绑定到react中的多个事件

Reactjs 将对象绑定到react中的多个事件,reactjs,Reactjs,在这里回答新手问题: 我得到了一个带有多个过滤器作为复选框的搜索表单。现在,在react中,我理解您必须将复选框的onChange事件绑定到事件处理程序。由于可能有10个以上的复选框,我想将这些复选框的结果放在一个过滤器对象中,如下所示: this.state = { categoryFilter: { hr: false, ict: false, finance: false, sales: false, marketing: false } }

在这里回答新手问题:

我得到了一个带有多个过滤器作为复选框的搜索表单。现在,在react中,我理解您必须将复选框的onChange事件绑定到事件处理程序。由于可能有10个以上的复选框,我想将这些复选框的结果放在一个过滤器对象中,如下所示:

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();
}
当您取消选中复选框时,这也会处理这种情况