reactjs - 在 react-select 向下钻取菜单中显示最后可用的选项
问题描述
我正在使用 react-select 包构建一个向下钻取菜单。目标是创建多个级别并引导用户找到正确的选项(逐步)。
我想向用户显示最后可用的选项,而不是“无选项页面”。
所以如果你点击target 1
-> sub item 1
->sub item nested 1
菜单应该关闭。如果用户再次打开菜单,用户应该有选项:sub item nested 1
而sub item nested 2
不是No options
页面。
function SingleSelect() {
const [selectOptions, setSelectOptions] = useState({
isMenuOpen: false,
closeMenuOnSelect: false,
renderValue: false,
options
});
function handleOptionClick(e, props) {
e.stopPropagation();
e.preventDefault();
const nestedGroup = props.data.sub_items;
if (nestedGroup) {
setSelectOptions({
options: nestedGroup,
closeMenuOnSelect: false,
renderValue: false,
isMenuOpen: true
});
}
if (!nestedGroup) {
setSelectOptions({
closeMenuOnSelect: true,
renderValue: true,
isMenuOpen: false
});
}
}
function Option(props) {
return (
<div onClick={(e) => handleOptionClick(e, props)}>
<components.Option {...props} isSelected={false} />
</div>
);
}
return (
<Select
name="options"
classNamePrefix
components={{ Option }}
closeMenuOnSelect={selectOptions.closeMenuOnSelect}
menuisOpen={selectOptions.isMenuOpen}
controlShouldRenderValue={selectOptions.renderValue}
isSearchable={false}
options={selectOptions.options}
/>
);
}
Codesandbox 中的示例:https ://codesandbox.io/s/multi-level-react-select-13rtk?file=/index.js
解决方案
推荐阅读
- java - 寻找定义 javax.activity 的 jar(不再由 java.corba 模块根据 JEP 320 提供)
- regex - 迭代正则表达式捕获的终身问题
- sonarqube - SonarLint for Eclipse 无法绑定项目:只能返回前 10000 个结果
- sapui5 - 使用 CDN 和组件在 sapui5 中设置资源路径
- google-cloud-firestore - Flutter:使用 Firestore 数据进行一些计算
- python-3.x - 当我在终端上运行 python -v 而不是 python -V 时会发生什么?
- javascript - 找不到图标(初级)
- android - 如何制作 RealmList
可打包? - java - 在设计模式中定义关系的黑白箭头
- javascript - 如何将数据传递给模态