使用multiselect-react-dropdown组件出现Cannot read properties of undefined错误排查
解决multiselect-react-dropdown的"Cannot read properties of undefined (reading 'toLowerCase')"错误
错误原因:
multiselect-react-dropdown的options属性默认要求传入对象数组,每个对象需包含label(用于显示)和value(用于标识)字段。你现在把allItemsData映射成了字符串数组(仅item.name),组件内部会尝试读取每个选项的默认字段(比如label),但字符串没有这个属性,导致读取到undefined,进而调用toLowerCase时触发错误。同时因为找不到显示字段,所以渲染出空选项。修复方案:
有两种常用方式解决:映射成符合要求的对象数组:
<Multiselect options={allItemsData?.map((item) => ({ label: item.name, value: item.id // 用id作为唯一标识,也可以用name }))} onChange={(value) => console.log(value)} />这样组件能正确识别每个选项的显示文本和值,点击选择时也能正常触发
onChange,返回选中的对象数组。保留原对象数组,指定自定义显示字段:
如果不想修改options的结构,可以通过组件的displayValue属性指定用哪个字段作为显示文本,valueField指定值字段:<Multiselect options={allItemsData} displayValue="name" // 指定显示item.name valueField="id" // 指定值为item.id onChange={(value) => console.log(value)} />这种方式更直接,适合直接使用原数据结构的场景。
内容的提问来源于stack exchange,提问作者PRJ
相关产品推荐
相关产品推荐

