繁体   English   中英

TypeError - 无法将未定义或 null 转换为 object。 尝试将 state object 值转换为 json 数组字符串

[英]TypeError- Cannot convert undefined or null to object. Trying to convert state object values to json array string

尝试将输入表单数据拟合到 JSON 数组字符串时,出现错误

无法将未定义或 null 转换为 object。

下面是我尝试在 state 数据上使用的代码:

const test = this.state.values;
Object.keys(test).forEach(key=>test[key]=[test[key]]);

当我执行console.log(test)时,数据如下:

Object
input1: {i: "ytuy"}
input2: {x: "tyutyu"}

我的最终目标是将 JSON output 设为:

{
   "input1":[{"i":"ytuy"}],
   "input2":[{"x":"tyutyu"}]
}

谁能建议我为什么会收到此错误?

看起来您要做的是将每个属性值放入一个单条目数组中。 您可以通过将 object 与Object.fromEntriesObject.entries映射来做到这一点。

正如评论中提到的,不要改变当前的 object 至关重要,因为这会改变组件的 state。

 const test = { input1: {i: "ytuy"}, input2: {x: "tyutyu"} } const mapped = Object.fromEntries( Object.entries(test).map( ([key, value]) => [key, [value]] ) ); console.log(JSON.stringify(mapped));

那将打印出来

{"input1":[{"i":"ytuy"}],"input2":[{"x":"tyutyu"}]}

您遇到的特定错误可能this.state.values有时是nullundefined的,它并不总是object 因此,在尝试 map 之前,您需要确保 object 存在。

由于在反应 js 中不允许对 state object 进行变异,因此这是我的问题的修复。

let obj = Object.assign({}, test );  // creates a brand new object
Object.keys(obj).forEach(key=>obj[key]=[obj[key]]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM