React中JSON解析后无法获取对象category数组值的问题求助
问题根因
两个问题导致功能异常:
category字段存的是对象数组,不是文本输入框支持的字符串、数字这类基础值类型,直接把数组传给TextField的value属性,组件无法正常解析,你截图里看到的[object Object]就是直接渲染对象/数组类型值的典型表现。- 你的JSON解析兜底逻辑有bug:如果
JSON.parse执行报错,你会把初始值null转成字符串"null"赋值给userContent,后续访问userContent.category会直接得到undefined,也会触发渲染异常。
修复方案
- 先修正JSON解析的兜底逻辑,解析失败时用空对象兜底,避免属性访问报错:
let userContent = {}; try { // 提前对contactform_content做空值兜底,避免传undefined/null给JSON.parse触发异常 userContent = JSON.parse(entity.contactform_content || '{}'); } catch (e) { userContent = {}; }
- 对category数组做格式转换后再传给输入框:如果只是要展示选中的类目列表,把数组里的类目值提取出来拼接成字符串即可:
<TextField autoComplete="off" label="Category" // 用可选链避免category不存在时报错,无值时默认空字符串 value={userContent.category?.map(item => item.value).join(', ') || ''} />
如果你用的是带选择功能的TextField(比如搭配组件库的选择器做多选类目),不要直接把数组绑定给value属性,需要按照组件要求单独传可选列表配置项,value只绑定当前选中的结果即可。

内容的提问来源于stack exchange,提问作者Lxbster
相关产品推荐
相关产品推荐

