reactjs - bootstrap dualbox 中的选定选项对于动态值正在消失
问题描述
我有这个反应代码:
import DualListBox from 'react-dual-listbox';
const ProjectTest = props => {
const [options, setOptions] = useState([]);
const [selectedOptions, setSelectedOptions] = useState([]);
const onChangeDualBox = (selected) => {
setSelectedOptions(selected);
};
const setCategory = (cat) => {
if(cat !== 'all'){
const found = allOptions.filter(el => el.category === cat);
setOptions(found);
}
else{
setOptions(allOptions);
}
}
const allOptions = [
{ value: '1', label: 'One', category: "premier" },
{ value: '2', label: 'Two', category: "premier" },
{ value: '3', label: 'Three', category: "laliga" },
{ value: '4', label: 'Four', category: "laliga" },
{ value: '5', label: 'Five', category: "seriea" },
{ value: '6', label: 'Six', category: "seriea" },
];
const categories = ["premier", "laliga", "seriea"];
useEffect(() => {
setOptions(allOptions);
}, []);
return (
<div>
<select onChange={e => setCategory(e.target.value)} >
<option value="all">
Select
</option>
{categories && categories.map((item, index) => (
<option key={index}>
{item}
</option>
))}
</select>
</div>
<div className="row paddingBottom20">
<DualListBox
options={options}
onChange={onChangeDualBox}
selected={selectedOptions}
canFilter={true}
/>
</div>
)
}
从一开始,左框显示所有值(一到六)。如果我选择“一”然后单击箭头按钮,则“一”从左侧框中消失并出现在右侧框中。
现在,如果我使用选择来更改类别(我选择“laliga”),那么左边的框将只包含“三”和“四”。哪个是对的。但问题是右边的盒子会被清空。如何强制右框累积所有选定的值?我可以看到“selectedOptions”仍然包含累积的选定值。但是没有在正确的框中显示它。我错过了什么?
解决方案
推荐阅读
- delphi - 如何使用 Delphi 从 Windows 证书存储中读取 SSL 证书
- r - 如何在 R (Linux) 中增加内存大小使用
- python - 在 python 中使用 exec() 运行具有字典语法的字符串
- loopbackjs - 如何在包含在 mixin 中的模型上设置 Loopback 4 中的表名?
- python - 如何在 Python 3.9.5 中递归地`dir()` 一个对象?
- firebase - Firebase crashalytics 挂起加载 - RN
- php - 如何破解 WordPress 网站上的尝试?
- javascript - 如何在没有 Javascript 或 Jquery 的情况下切换背景颜色?
- reactjs - REST 响应时间太长 react axios
- php - 在php中合并对象