【发布时间】:2021-07-27 04:52:58
【问题描述】:
我遇到了一个小问题 - 我正在使用 React-select 的组件,这就是我想要做的 - 我有几对这样的组件,在每一对中必须禁用一个,除非第一个值包含某个值,例如:
选择 1 的选项: 一种 乙 C 其他
如果选择 1 选择了“其他”选项,则不会禁用选择 2。
我在一个大型功能组件中使用这些,想知道是否有一种简单的方法可以做到这一点。这是我迄今为止尝试过的:
Select 1:
<Select
isMulti={true}
closeMenuOnSelect={false}
options={options}
getOptionLabel={(option) => option.name}
getOptionValue={(option) => option}
onChange={onChange}
value={selected}
/>
Select 2:
<Select
isMulti={true}
closeMenuOnSelect={false}
options={options}
getOptionLabel={(option) => option.name}
getOptionValue={(option) => option}
onChange={onChange}
isDisabled={containsOther}
/>
Method for checking Select 1 selected values and setting them:
let selected;
const onChange = (data) => {
console.log('on change = ' + JSON.stringify(data))
selected = data
}
然后我还会从 onChange 内部调用某种方法,将“containsOther”布尔值设置为 true,如果从所有选定的值中都有一个值“Other”。问题是我必须为每对选择执行此操作,我必须有条件地启用/禁用其中一个,这意味着我必须创建多个几乎相同的方法。
有没有一种简单的方法可以做到这一点,因为这看起来不干净?
【问题讨论】:
-
options长什么样子? -
Options 是一个像这样的简单数组: [ { "id": 1, "name": "A" } ]
标签: reactjs react-select