我有一个MaterialUI选择代码,我动态地处理值参数。我的问题是,当我设置任何值时,它总是说它超出范围,甚至显示有效值中的值。
SelectInput.js:291 Material-UI: you have provided an out-of-range value `100001,250000` for the select (name="followers") component.
Consider providing a value that matches one of the available options or ''.
The available values are `0,50000`, `50001,100000`, `100001,250000`, `250001,500000`, `500001,750000`, `750001,9007199254740991`.
(anonymous) @ SelectInput.js:291
这是我的简化代码:
const followers = [
{ '0-50k': [0, 50000] },
{ '50k-100k': [50001, 100000] },
{ '100k-250k': [100001, 250000] },
{ '250k-500k': [250001, 500000] },
{ '500k-750k': [500001, 750000] },
{ '+1M': [750001, Number.MAX_SAFE_INTEGER] },
];
<div className={classes.formGroup}>
<InputLabel id="followersL">Followers</InputLabel>
<Select
className={classes.field}
fullWidth
id="followers"
labelId="followersL"
margin="dense"
displayEmpty
name="followers"
onChange={(event) => setValue(event.target.value)} //I've updated the sate with the new value
value={
filters.basicInfo.followers
? value
: ''
}
variant="outlined"
>
{followers.map((element) => (
<MenuItem
value={element[Object.keys(element)]}
key={Object.keys(element)[0]}
>
{Object.keys(element)[0]}
</MenuItem>
))}
</Select>
</div>
正如您在消息中所看到的,值选择了100001,250000
,它在范围示例100001,250000
内
问题出在哪里?
7条答案
按热度按时间wribegjk1#
按如下方式添加此默认值=“”〈选择...默认值="”〉
dgenwo3n2#
此建议可能对其他人有用:如果Select元素的值为object,则它应该是“选项”列表中对象的确切示例。例如:
xe55xuns3#
字符串化你的值会让它起作用。
如果在将结果发送到服务器之前需要它保持原始数组格式,可以使用如下函数来完成此操作
在我的code here中,我使用了您提供的示例,并且能够复制您的错误,但是字符串化值会删 debugging 误,并使其按预期工作。
zphenhs44#
当使用默认值为
-1
的number
状态时,我遇到了同样的问题(您提供了一个超出范围的值):此问题的解决方案是为Material的UI
Select
组件中的value
特性指定一个空字符串,而不是使用默认值-1
:完整组件示例:
cx6n0qe35#
我得到了相同的错误,我通过确保默认值和之后的其他选择值相同来解决它,例如,如果默认值是
''
这样的字符串,则其他值是objects
,它将显示警告,因此为了避免此类问题,请将默认值设置为[]
或{}
,最好是null
qxsslcnc6#
添加到@Ait Friha Zaid响应。
我还添加了defaultValue属性,但还添加了一个附加选项:
这样,您总是有一个禁用的选项,它作为默认选项的占位符工作,如果您想进行表单验证,直到用户更改选项,状态不会更改。
hfwmuf9z7#
从一些研究中,我逐渐了解到这个警告的原因,在我的情况下,是MUI选择试图Map一个选项列表,这些选项在第一次渲染时不可用,因为该列表来自Axios响应。
我创建了一个名为
Dropdown
的组件来呈现MUI Select组件,并为它提供了四个属性:options
:选项列表,initialValue
:默认值,因为我对Dropdown
组件的不同示例有不同的默认值,这些示例不是options
列表的第一项......以及其他2个不在本讨论范围内的 prop 。
因此,对于
Dropdown
组件的每个示例,我必须检查options
列表是否有任何数据,然后才能呈现它。这就是从控制台删除警告的原因。这件事困扰了我很长时间。希望这能对某人有所帮助。