2017-10-10 59 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/