tojs sirve react que para inmutabilidad immutable array redux immutable.js

redux - sirve - ImmutableJS cómo simplificar un filtro y actualizar la lógica



react redux (1)

En primer lugar, vale la pena mencionar que su estructura de datos es Immutable Lists and Maps ... no JS Arrays and Objects.

De acuerdo, sin cambiar su estructura de datos, podría hacer lo siguiente:

posts.map(post => post.get(''id'') === payload.post_id ? post.update(''comments'', comments.push(payload) : post)

Si tuviera que cambiar su estructura de datos, y en lugar de tener una Lista de publicaciones, tenía un Mapa de publicaciones con su ID como la clave que podría hacer:

post.updateIn([payload.post_id, ''comments''], comments => comments.push(payload))

Por cierto, puede usar push o concat aquí, ambos funcionarán de la misma manera.

Además, si los comentarios no están definidos, puede proporcionar un "noSetValue" como una lista ( https://facebook.github.io/immutable-js/docs/#/List/updateIn ):

posts.map(post => post.get(''id'') === payload.post_id ? post.update(''comments'', Immutable.List([]), comments.push(payload) : post) post.updateIn([payload.post_id, ''comments''], Immutable.List([]), comments => comments.push(payload))

La siguiente es mi estructura de datos

[ { "id": 1, "title": "Welcome to my playground", "description": "This is so fun to play with, you will like it <3", "comments": [ { "id": 1140406, "comment": "this is an example comment", "postId": 1 } ] }, ... ]

Y estoy tratando de usar js inmutables para hacer esta operación

  1. Obtener todas las publicaciones
  2. Buscar una publicación Quiero agregar un comentario a
  3. Agregar los comentarios cuando se encuentra la publicación

El siguiente es mi código

posts = posts.map((post) => { if(post.get(''id'') == payload.post_id) { return post.update(''comments'', (comments) => { return comments.push(Map({ id: payload.id, comment: payload.comment })); }); } return post; });

Pero supongo que este patrón es muy común y debería haber una manera más simple de hacerlo en inmutableJS . Cualquier consejo será útil, gracias.