Reactjs 在onChange事件上组合两个不同但非常相似的函数

Reactjs 在onChange事件上组合两个不同但非常相似的函数,reactjs,Reactjs,我有两个非常相似的下拉列表,都有一个“onChange”事件: <Dropdown items={employeeNames} selection={employeeNames.name} onChange={this.handleEmployeeNamesChange} /> <Dropdown items={employeeTypes} selection={employeeType.nam

我有两个非常相似的下拉列表,都有一个“onChange”事件:

    <Dropdown
      items={employeeNames}
      selection={employeeNames.name}
      onChange={this.handleEmployeeNamesChange}
    />
    <Dropdown
      items={employeeTypes}
      selection={employeeType.name}
      onChange={this.handleEmployeeTypeChange}
    />

由您创建一个方法来组合您的更改并传递参数

最终目标是更新您的
状态的右侧
,将此键用作参数

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={v => this.handleChangeDropdown("employeeNames",v)}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={v => this.handleChangeDropdown("employeeTypes",v)}
/>

handleChangeDropdown = (key,newVal) => {
  this.setState({
     [key]:newVal,
     isValid: getValidation(newState)
  })
};
this.handleChangeDropdown(“employeeNames”,v)}
/>
此.handleChange下拉列表(“employeeTypes”,v)}
/>
handleChangeDropdown=(键,newVal)=>{
这是我的国家({
[钥匙]:纽瓦尔,
isValid:getValidation(newState)
})
};

您可以创建一种方法来组合更改并传递参数

最终目标是更新您的
状态的右侧
,将此键用作参数

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={v => this.handleChangeDropdown("employeeNames",v)}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={v => this.handleChangeDropdown("employeeTypes",v)}
/>

handleChangeDropdown = (key,newVal) => {
  this.setState({
     [key]:newVal,
     isValid: getValidation(newState)
  })
};
this.handleChangeDropdown(“employeeNames”,v)}
/>
此.handleChange下拉列表(“employeeTypes”,v)}
/>
handleChangeDropdown=(键,newVal)=>{
这是我的国家({
[钥匙]:纽瓦尔,
isValid:getValidation(newState)
})
};
您可以创建一个工厂方法,为您想要的每个更改处理程序创建函数

handleGenericChange=changedProperty=>newVal=>{
const newState={…this.state,[changedProperty]:newVal};
this.setState({…newState,isValid:getValidation(newState)});
}
handleEmployeeNameChange=handleGenericChange('employeeNames'))
handleEmployeeTypeChange=handleGenericChange('employeeTypes')
您可以创建一个工厂方法,为您想要的每个更改处理程序创建函数

handleGenericChange=changedProperty=>newVal=>{
const newState={…this.state,[changedProperty]:newVal};
this.setState({…newState,isValid:getValidation(newState)});
}
handleEmployeeNameChange=handleGenericChange('employeeNames'))

handleEmployeeTypeChange=handleGenericChange('employeeTypes')
听起来像是一个代码审查问题。是的,有:

handleEmployeeChange = category => newVal => {
   const newState = { ...this.state, [category]: newVal };
   this.setState({ ...newState, isValid: getValidation(newState) });
};
为arrow函数设置第二个参数,允许对其进行预配置以供以后使用:

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={this.handleEmployeeChange('employeeNames')}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={this.handleEmployeeChange('employeeTypes')}
/>

听起来像是一个代码审查问题。是的,有:

handleEmployeeChange = category => newVal => {
   const newState = { ...this.state, [category]: newVal };
   this.setState({ ...newState, isValid: getValidation(newState) });
};
为arrow函数设置第二个参数,允许对其进行预配置以供以后使用:

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={this.handleEmployeeChange('employeeNames')}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={this.handleEmployeeChange('employeeTypes')}
/>

更改时使用箭头功能,并添加要更改的状态名称

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={(v) => this.handleEmployeeChange('employeeNames', v)}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={(v) => this.handleEmployeeChange('employeeTypes', v)}
/>

更改时使用箭头功能,并添加要更改的状态名称

<Dropdown
  items={employeeNames}
  selection={employeeNames.name}
  onChange={(v) => this.handleEmployeeChange('employeeNames', v)}
/>
<Dropdown
  items={employeeTypes}
  selection={employeeType.name}
  onChange={(v) => this.handleEmployeeChange('employeeTypes', v)}
/>
您可以这样做:

    <Dropdown
      items={employeeNames}
      selection={employeeNames.name}
      onChange={this.handleEmployeeChange.bind(this, "name")}
    />

   <Dropdown
      items={employeeTypes}
      selection={employeeType.name}
      onChange={this.handleEmployeeChange.bind(this, "type")}
   />
您可以这样做:

    <Dropdown
      items={employeeNames}
      selection={employeeNames.name}
      onChange={this.handleEmployeeChange.bind(this, "name")}
    />

   <Dropdown
      items={employeeTypes}
      selection={employeeType.name}
      onChange={this.handleEmployeeChange.bind(this, "type")}
   />

声明一个函数,当您在onClick pass上调用它时,让我们说“name”,然后键入另一个函数,并在您声明和设置状态的地方检查它。声明一个函数,当您在onClick pass上调用它时,让我们说“name”然后输入另一个,在你声明并设置状态的地方检查。同一时间,同一个答案,我保留我的,用不同语法写的,同一时间,我保留我的,用不同语法写的