reactjs - 是否可以选择 Material UI 选择的对象?
问题描述
这是与材质 ui 的反应,使用 TextField 和 ManuItem 组件构建一个选择字段。我的代码:
{data.category?.map((category) => (
<MenuItem
key={category.id}
value={{
id: category.id,
percentage: category.percentage,
}}
>
{category.name}
</MenuItem>
但给了我这个控制台警告:Material-UI: You have provided an out-of-range value [object Object]
for the select...
任何想法?
解决方案
这是因为 TextField 只接受列表中的一个值。在这种情况下,列表项是对象而不是字符串,因此它们不匹配,因此会发出警告。
您可以将项目的值更改为字符串并将 TextField 的值设置为字符串值之一。
<MenuItem key={d.id} value={d.name} >
或者您必须对 json 对象进行字符串化,因为 HTML 属性不能包含 JSON 对象。因此,它尝试通过对生成 '[object Object]' 作为其值的对象使用 toString() 方法来生成有效字符串。因此,如果您对对象进行字符串化,您的列表项将具有整个对象的字符串化值(请注意,如果对象非常大,这可能不是最佳方法)。
<MenuItem key={d.id} value={JSON.stringify({ id: d.id, percentage: d.percentage, name: d.name })} >
并将 value 道具添加到 TextField
<TextField
id="outlined-select"
select
required
label="Select"
variant="outlined"
onChange={handleChange}
helperText="Please select a value"
InputLabelProps={{
shrink: true
}}
value={selectState || ""} // THIS IS NEEDED
defaultValue={""}
>
推荐阅读
- python - 如何从点簇中识别线?
- php - Php 无法用字符串反斜杠解码 Json
- wordpress - ERR_TOO_MANY_REDIRECTS WordPress 多站点 + Nginx
- c# - 调试多维数组 C#
- kubernetes - Moodle eeror 写入数据库
- google-cloud-platform - GCP:复制 Google Cloud Platform 中的现有项目
- android - 我可以从安卓基础智能手机(如三星 A7)获得多少触摸
- python - Python3 & Kivy:小部件的文本颜色在每次运行时随机设置为默认值
- ios - Xcode - 我更改了产品模块名称,现在自动完成功能不再起作用(使用新模块名称时)
- java - Junit如何在测试方法中模拟方法返回?