2017-10-10 11 views
0

Je reçois des données JSON à partir d'un point de terminaison à l'aide d'Ajax.Création d'un jeu d'enregistrements basé sur un objet immuable

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

Je convertit les données à un objet immuable:

const imData = Immutable.fromJSON(jsData) 

Je veux créer une base de jeu d'enregistrements sur cet objet immuable

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

Cette erreur est renvoyée Uncaught TypeError: Cannot read property 'get' of undefined.

REMARQUE: Pourquoi je ne transmets pas directement les jsData comme valeurs par défaut de l'ensemble d'enregistrements? Je ne veux pas que ce soit possible: rec[0].x = 1.

Quelle serait la bonne façon de convertir les données reçues en un ensemble d'enregistrements totalement immuable?

Répondre

0
  1. Votre exemple de données JSON est JSON non valide.
  2. Vous ne publiez pas d'exemple de code qui génère l'erreur. Le message indique Cannot read property 'get' of undefined. tandis que dans vos échantillons vous n'appelez pas get sur quoi que ce soit.

Utilisez des objets pour créer un enregistrement. https://facebook.github.io/immutable-js/docs/#/Record

Un enregistrement est similaire à un objet JS, mais fait respecter un ensemble spécifique de clés de chaîne autorisés, et a des valeurs par défaut.

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/