TypeError-无法将未定义或空转换为对象。尝试将状态对象值转换为 JSON 数组字符串
2021-03-26
1262
尝试将输入表单数据放入 JSON 数组字符串时,出现错误
Cannot convert undefined or null to object.
下面是我尝试在状态数据上使用的代码:
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 输出如下:
{
"input1":[{"i":"ytuy"}],
"input2":[{"x":"tyutyu"}]
}
有人能解释我为什么会收到此错误吗?
2个回答
看起来您正在尝试将每个属性值放入单条目数组中。您可以通过使用
Object.fromEntries
和
Object.entries
映射对象来实现此目的。
正如评论中提到的,至关重要的是不要改变当前对象,因为这将改变组件的状态。
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
有时
null
或
undefined
,并且它并不总是
object
。因此,在尝试映射对象之前,您需要确保该对象存在。
Linda Paiste
2021-03-26
由于 React js 中不允许改变状态对象,因此这里是我的问题的解决方案。
let obj = Object.assign({}, test ); // creates a brand new object
Object.keys(obj).forEach(key=>obj[key]=[obj[key]]);
user3274140
2021-03-30