2017-10-10 49 views
0

我正在使用Ajax從端點接收JSON數據。基於不可變對象創建記錄集

const jsData = '[ {"x": 1, "y": 1}, {"x": 2, "y": 2}, … ]'; 

我將數據轉換爲不可變對象:

const imData = Immutable.fromJSON(jsData) 

我想這將引發錯誤Uncaught TypeError: Cannot read property 'get' of undefined此不可變對象

const Rec = Immutable.Record(imData) 
const rec = new Rec(); 

上創建一個記錄集的基礎。

注意:爲什麼我不直接將jsData作爲記錄集的默認值? 我不希望這是可能的:rec[0].x = 1

將接收到的數據轉換爲完全不可變的記錄集的正確方法是什麼?

回答

0
  1. 您的JSON數據示例無效JSON。
  2. 您不會發布產生錯誤的代碼示例。消息說 Cannot read property 'get' of undefined.而在你的樣品中,你不會在任何東西上調用get

使用對象創建記錄。 https://facebook.github.io/immutable-js/docs/#/Record

記錄是類似於JS對象,但強制一組特定的 允許字符串鍵的,並且具有默認值。

const jsData = '[{"x":1,"y":1},{"x":2,"y":2}]'; 
const imData = JSON.parse(jsData) 
console.log(imData) 
const Rec = Immutable.Record(imData[0]) 
const rec = new Rec(); 

console.log(rec.get('x')); 

https://jsfiddle.net/sh637wsm/