onChange react-select 没有调用我的函数
onChange react-select not calling my function
我有以下 react-select 代码,它们都可以正常工作并设置我的 Formik 状态值。
const [selectedOptions, setSelectedOptions] = useState([]);
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={(selectedOptions) => {
let e = { target: { name: `myGroups.${index}.selectedOptions`, value: selectedOptions } };
handleChange(e);
handleChangeIndex(index);
}}
/>
我的问题是,在onChange
期间我还想调用另一个函数:handleChangeIndex
来设置状态值,即:
const handleChangeIndex = index => selectedOption => {
console.log("inside handleChangeIndex....")
const optionsCopy = [...selectedOptions];
optionsCopy[index] = selectedOption;
setSelectedOptions(optionsCopy);
};
在上面的 <Select>
中,我的函数 handleChangeIndex(index)
没有被调用,因为我没有看到 console.log 消息,但是如果我按如下方式调用 <Select>
只有我的 handleChangeIndex
才有效。
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={handleChangeIndex(index)}
/>
人们可以协助如何调用我的功能,如顶部<Select>
当您将 handleChangeIndex
直接传递给 Select
时,您正在调用该函数,该函数返回另一个函数 (currying)。然后 Select
在值更改时调用新的内部函数。
当您在第一个示例中的 onChange
中直接调用 handleChangeIndex
时,您只调用了一次,这意味着您正在获取该内部函数,然后不对其进行任何操作.
如果您随后使用 selectedOptions
调用该内部函数,那么它应该可以正常工作。
const [selectedOptions, setSelectedOptions] = useState([]);
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={(selectedOptions) => {
let e = { target: { name: `myGroups.${index}.selectedOptions`, value: selectedOptions } };
handleChange(e);
handleChangeIndex(index)(selectedOptions);
}}
/>
我有以下 react-select 代码,它们都可以正常工作并设置我的 Formik 状态值。
const [selectedOptions, setSelectedOptions] = useState([]);
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={(selectedOptions) => {
let e = { target: { name: `myGroups.${index}.selectedOptions`, value: selectedOptions } };
handleChange(e);
handleChangeIndex(index);
}}
/>
我的问题是,在onChange
期间我还想调用另一个函数:handleChangeIndex
来设置状态值,即:
const handleChangeIndex = index => selectedOption => {
console.log("inside handleChangeIndex....")
const optionsCopy = [...selectedOptions];
optionsCopy[index] = selectedOption;
setSelectedOptions(optionsCopy);
};
在上面的 <Select>
中,我的函数 handleChangeIndex(index)
没有被调用,因为我没有看到 console.log 消息,但是如果我按如下方式调用 <Select>
只有我的 handleChangeIndex
才有效。
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={handleChangeIndex(index)}
/>
人们可以协助如何调用我的功能,如顶部<Select>
当您将 handleChangeIndex
直接传递给 Select
时,您正在调用该函数,该函数返回另一个函数 (currying)。然后 Select
在值更改时调用新的内部函数。
当您在第一个示例中的 onChange
中直接调用 handleChangeIndex
时,您只调用了一次,这意味着您正在获取该内部函数,然后不对其进行任何操作.
如果您随后使用 selectedOptions
调用该内部函数,那么它应该可以正常工作。
const [selectedOptions, setSelectedOptions] = useState([]);
<Select
options={myOptions}
isMulti={true}
name={`myGroups.${index}.selectedOptions`}
onChange={(selectedOptions) => {
let e = { target: { name: `myGroups.${index}.selectedOptions`, value: selectedOptions } };
handleChange(e);
handleChangeIndex(index)(selectedOptions);
}}
/>