簡體   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