2017-03-23 15 views
1

전체 :Redux Reducer의 정규화 된 엔티티 데이터를 참조하여 수정하는 방법

저는 redux reduder를 처음 접했고 대부분의 대답은 normalizr.js를 가리 킵니다. 촬영 예와 같이 :

const blogPosts = [ 
    { 
     id : "post1", 
     author : {username : "user1", name : "User 1"}, 
     body : "......", 
     comments : [ 
      { 
       id : "comment1", 
       author : {username : "user2", name : "User 2"}, 
       comment : ".....", 
      }, 
      { 
       id : "comment2", 
       author : {username : "user3", name : "User 3"}, 
       comment : ".....", 
      } 
     ]  
    }, 
    { 
     id : "post2", 
     author : {username : "user2", name : "User 2"}, 
     body : "......", 
     comments : [ 
      { 
       id : "comment3", 
       author : {username : "user3", name : "User 3"}, 
       comment : ".....", 
      }, 
      { 
       id : "comment4", 
       author : {username : "user1", name : "User 1"}, 
       comment : ".....", 
      }, 
      { 
       id : "comment5", 
       author : {username : "user3", name : "User 3"}, 
       comment : ".....", 
      } 
     ]  
    } 
    // and repeat many times 
] 

내가 아래로 스키마를 정의 :

var authorSchm = new schema.Entity("authors", {}, {idAttribute: "username"}); 
var commentSchm = new schema.Entity("comments", {author:authorSchm}) 
var commentList = [commentSchm]; 
var postSchm = new schema.Entity("posts", {author:authorSchm, comments:commentList}); 
var postList = [postSchm]; 


var normalizedData = normalize(blogPosts, postList); 
console.log(JSON.stringify(normalizedData, null, 4)); 

그리고이 같은 결과를 얻을 : 내가 돌아 오는 감속기에서이 정규화 된 데이터를 어떻게 사용합니까 궁금

{ 
    "entities": { 
     "authors": { 
      "user1": { 
       "username": "user1", 
       "name": "User 1" 
      }, 
      "user2": { 
       "username": "user2", 
       "name": "User 2" 
      }, 
      "user3": { 
       "username": "user3", 
       "name": "User 3" 
      } 
     }, 
     "comments": { 
      "comment1": { 
       "id": "comment1", 
       "author": "user2", 
       "comment": "....." 
      }, 
      "comment2": { 
       "id": "comment2", 
       "author": "user3", 
       "comment": "....." 
      }, 
      "comment3": { 
       "id": "comment3", 
       "author": "user3", 
       "comment": "....." 
      }, 
      "comment4": { 
       "id": "comment4", 
       "author": "user1", 
       "comment": "....." 
      }, 
      "comment5": { 
       "id": "comment5", 
       "author": "user3", 
       "comment": "....." 
      } 
     }, 
     "posts": { 
      "post1": { 
       "id": "post1", 
       "author": "user1", 
       "body": "......", 
       "comments": [ 
        "comment1", 
        "comment2" 
       ] 
      }, 
      "post2": { 
       "id": "post2", 
       "author": "user2", 
       "body": "......", 
       "comments": [ 
        "comment3", 
        "comment4", 
        "comment5" 
       ] 
      } 
     } 
    }, 
    "result": [ 
     "post1", 
     "post2" 
    ] 
} 

및 combineReducers? 그리고 참조 문자열에 따라 다음 수준의 데이터를 가져 오려면 어떤 엔터티를 사용해야하는지 어떻게 알 수 있습니까 (예 : "post1"을 얻을 때 게시물 개체 및 내부를 가져 오기 위해 엔티티로 이동해야한다는 것을 어떻게 알 수 있습니까? post1 객체, 그 comment1, comment2 ..에 대해 수행하는 방법)

답변

0

이 답변은 주로 주관적이며 특정 응용 프로그램 및 사용 사례에 따라 달라질 수 있습니다. 일반적이고 권장되는 방법은 example 공식을 확인하십시오. 다음은 combineReducers의 모습입니다.

+0

감사합니다. 내 blogposts 예제에 따라 lil bit detail을 주관적으로 말할 수 있습니까? – Kuan