javascript - Material UI 自动完成,多个默认值
问题描述
我有一个具有以下代码的工作材料 ui 自动组件:
<Autocomplete
multiple
options={props.cats}
defaultValue={editRequest?([props.cats[props.post.category]]):undefined}
limitTags={2}
这适用于 props.post.category 在 props.post.category 中只有一个值的情况。
当有两个值时,例如34,36
进入 for props.post.category
,它会破坏页面并显示错误。在普通函数中,我会使用 .map 循环遍历数组。这是在里面,defaultValue
所以我不知道如何分配两个默认值,它们基本上是
props.cats[34] and props.cats[36]
换句话说,用逗号分隔的字符串如何转换为单独的数组
input=> 34,35 (stored in props.category)
array=> [props.cats[34], props.cats[35]]
解决方案
你可以props.post.category
用方括号括起来,flat
然后它map
,所以你不必担心它是单个值还是值数组
console.log([34].flat())
console.log([[35, 36]].flat())
const getDefaultValue = () => {
if (!editRequest) {
return undefined
}
return [props.post.category].flat().map((cat) => props.cats[cat])
}
return (
<Autocomplete
multiple
options={props.cats}
defaultValue={getDefaultValue()}
limitTags={2}
/>
)
推荐阅读
- hive - Hive - 如何将数组转换为字符串?
- google-chrome - 将 Chrome 扩展程序转换为 Edge 扩展程序,权限问题
- sql-server - 无法在 SQL Server 中创建登录
- javascript - 如何避免将 JavaScript ES6 模块导出添加到全局范围以在普通脚本块中使用?
- string - 使用堆栈反转输入表达式
- javascript - 如何使用 beforeRouteEnter 在 vuejs 中正确加载异步数据?
- xcode - Xcode 助手编辑器已禁用
- ubuntu-18.04 - Ubuntu 18.04 系统用户提示输入密码
- javascript - 如何让HTML中的输入框只接受IP ADDRESS
- json - 如何使用 json API 在列表视图中创建网格视图