gpt4 book ai didi

javascript - 如何在 react-select 中合并 selectedOptions

转载 作者:行者123 更新时间:2023-12-04 01:30:22 26 4
gpt4 key购买 nike

我使用 react-select,我是新手。我有一个名为 Example 的组件

const colourOptions = [
{ value: '1', label: '1', color: '#00B8D9' },
{ value: '2', label: '2', color: '#0052CC' },
{ value: '3', label: '3', color: '#5243AA' },
];

class Example extends React.Component {
state = {
selectedOption: null,
}

render() {
const { selectedOption, onHandleChange } = this.props;
return (

<Select
onChange={onHandleChange}
options={colourOptions}
/>

);
}
}

export default Example;

在另一个文件中我们有一个功能组件

export default function UserProfile() {
const [selectedOption, setSelectedOption] = useState({});

const handleChange = (selectedOption) => {
setSelectedOption(selectedOption)
console.log(selectedOption)
};

return (
<div>

<Example onHandleChange={handleChange} selectedOption={selectedOption}/>
<Example onHandleChange={handleChange} selectedOption={selectedOption}/>
<Example onHandleChange={handleChange} selectedOption={selectedOption}/>

</div>
);
}

通过更改每个 Example,删除了先前 selectedOption 的值。如何将所有 selectedOptions 放入(合并)一个对象中?

最佳答案

您需要为所有 Example 实例维护一个单独的选项值。

像这样:

export default function UserProfile() {
const [selectedOption, setSelectedOption] = useState({ example1: '', example2: '', example3: '' });

const handleChange = (key, selectedOption) => {
setSelectedOption(prev => ({...prev, [key]: selectedOption}));
console.log(selectedOption)
};

return (
<div>
<Example1 onHandleChange={(value) => handleChange('example1', value)} selectedOption={selectedOption.example1}/>
<Example2 onHandleChange={(value) => handleChange('example3', value)} selectedOption={selectedOption.example2}/>
<Example3 onHandleChange={(value) => handleChange('example3', value)} selectedOption={selectedOption.example3}/>
</div>
);
}

编辑工作代码在这里:

https://codesandbox.io/s/eloquent-mclaren-8s2z2?file=/src/UserProfile.js

另请注意 - 状态更新是异步的,因此当您在设置状态后立即执行 console.log 时,您可能会看到日志打印旧状态。

阅读more here如果你喜欢

关于javascript - 如何在 react-select 中合并 selectedOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61152641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com