Material UI Select组件产生key缺失警告如何解决
问题原因
运行MUI Select组件代码时出现Each child in a list should have a unique "key" prop警告,是因为Select渲染下拉列表的<li>子节点时,需要每个同层级子元素携带唯一的key属性供React做虚拟DOM对比,组件本身不会自动给传入的MenuItem生成key,需要手动配置。
解决方法
给每一个<MenuItem>子组件传入唯一的key属性即可,通常直接使用每个选项唯一的value值作为key就满足要求。
针对示例代码,只需要修改MenuItem部分即可:
<Select value={value} label="Profile" onChange={onChange} > <MenuItem key="1" value="1">Test</MenuItem> <MenuItem key="2" value="2">Test</MenuItem> </Select>
如果选项是动态遍历生成的,直接在遍历逻辑里给MenuItem绑定key即可,示例:
// 模拟选项数据 const profileOptions = [ { id: 1, name: 'Test' }, { id: 2, name: 'Test' } ] // Select内渲染选项 <Select value={value} label="Profile" onChange={onChange} > {profileOptions.map(option => ( <MenuItem key={option.id} value={option.id} > {option.name} </MenuItem> ))} </Select>
配置key的注意事项:
- key只需要保证当前Select下所有MenuItem同层级唯一即可,不需要全局唯一
- 优先使用选项本身自带的唯一标识(比如id、value)作为key
- 不推荐使用遍历的index作为key,避免选项顺序变动时引发渲染异常
内容的提问来源于stack exchange,提问作者Derek Greer
相关产品推荐
相关产品推荐

