Mantine Select组件数据无法渲染的问题求助
Mantine Select组件数据无法渲染的问题求助
嘿,我看了你的问题和代码片段,console能正常打印cityOptions但Select组件里就是不显示数据,大概率是几个常见的小问题导致的,我帮你梳理下排查方向:
最可能的原因:用错了Select的数据源属性
Mantine的Select组件用来传选项数据的属性是items,而不是你代码里写的data!这是很多刚用Mantine的开发者容易踩的坑,把属性名改过来应该就能解决大部分问题了。确认选项格式是否完全符合要求
你通过map生成的cityOptions结构是对的(包含value和label字段),但还是要再确认下:cities数组里的每个对象确实有id和name属性,没有拼写错误(比如把name写成cityName)id转成字符串后是否正常,不会出现undefined或者空值的情况
可以把cityOptions打印得更详细点,比如console.log(JSON.stringify(cityOptions)),看看结构是不是完全符合[{value: "xxx", label: "xxx"}, ...]
检查
isLoading状态的正确性
会不会你的isLoading状态一直没有切换为false?导致即使数据加载完成了,Select还是传的空数组。可以在console.log(cityOptions)旁边加个console.log("isLoading:", isLoading),确认数据加载完成后isLoading会变成false。修正后的代码示例
把data改成items是最关键的一步,调整后的Select组件代码大概是这样:<Select name="city" placeholder="Cities" value={city || null} maw={200} size="md" items={isLoading ? []: cityOptions} {/* 这里把data改成items */} disabled={isLoading} onChange={(value) => setCity(value as string)} icon={<IconSelector size={18} stroke={1.75} />} clearable style={{ marginBottom: 0 }} />
先试试把data换成items,这应该是最直接的解决方案,如果还是不行再排查其他几点~
备注:内容来源于stack exchange,提问作者Aakriti
相关产品推荐
相关产品推荐

