강의

멘토링

커뮤니티

Inflearn Community Q&A

nan84203857's profile image
nan84203857

asked

[Renewal] Creating NodeBird SNS with React

질문있습니다

Resolved

Written on

·

250

0

안녕하세요 제로초님

 case LOAD_POSTS_SUCCESS:
      draft.loadPostsLoading = false;
      draft.loadPostsDone = true;
      draft.mainPosts = draft.mainPosts.concat(action.data);
      draft.hasMorePosts = action.data.length === 10;
      break;

만약 이 액션이 렌더링될때 실행되는 것이 아니라 버튼을 눌러서 위의 액션이 실행된다고 가정해보면

버튼을 두번 눌렀을 시 리덕스에 저장되어 있는 데이터가 동일한것이 있어도 쌓이더라구요?  

이런식으로요 

mainPosts:
0: {id: 1,  continen: 'coffie' …}
1: {id: 2,  continen: 'haha' …}
2: {id: 1,  continen: 'coffie' …}
3: {id: 2,  continen: 'haha' …}

제가 궁금한것은 버튼을 여러번 눌러서 액션이 여러번 실행되어도 이미 있는 값은 배열에 추가되지 않고 없는 값만 콘캣해서 배열에 넣고 싶거든요... 그래서 강의에서 했던 다른 액션들에 쓰인방법을 시도하고 필터도 써보고 여러가지것을 시도해보고 하루동안 투자해봤는데도 안되더라구요...  문제는 저 배열에 있는 값의 아이디를 전부 조회해야하는 것인것 같은데 그걸 성공을 못시키네요 ㅜ  어떤식으로 코드를 짜야 할지 궁금합니다 !!

reduxexpressnodejsreactNext.js

Answer 3

0

zerocho님의 프로필 이미지
zerocho
Instructor

length 오타입니다. 그리고 draft.mainPosts.push(action.data) 하면 되지 않을까요?

0

nan84203857님의 프로필 이미지
nan84203857
Questioner

제로초님

        case COOK_UP_SUCCESS
        draft.loadPostsLoading = false;
        draft.loadPostsDone = true;
        for(let i = 0i <action.data.legnthi++) {
        if ( action.data[i].id !== draft.mainPosts[i].id ){
        draft.mainPosts = draft.mainPosts.concat(action.data[i]);
        }}
        draft.hasMorePosts = action.data.length === 10;
        break;


        case COOK_UP_SUCCESS
        draft.loadPostsLoading = false;
        draft.loadPostsDone = true;
        const ha = draft.mainPosts
        for(let i = 0i <action.data.legnthi++) {
        if ( action.data[i].id !== ha[i].id ){
        draft.mainPosts = draft.mainPosts.concat(action.data[i]);
        }}
        draft.hasMorePosts = action.data.length === 10;
        break;


        case COOK_UP_SUCCESS
        draft.loadPostsLoading = false;
        draft.loadPostsDone = true;
        const ha = draft.mainPosts
        for(let i = 0i <action.data.legnthi++) {
        if ( action.data[i].id !== ha[i].id ){
        draft.mainPosts = ha.concat(action.data[i]);
        }}

        draft.hasMorePosts = action.data.length === 10;
        break;

이러한 방식들로 for문을 돌려봤는데 데이터가 하나도 안들어오네요 ㅜ 리듀서 안에서 뭘 하는게 아직 익숙치 않네요 ㅜ  어떻게 해야할까요  참고로 action.data도 배열로 들어옵니당

0

zerocho님의 프로필 이미지
zerocho
Instructor

for문으로 반복문 돌면서 하나하나씩 찾으셔야 합니다. id 1인 게시글 추가할거면 mainPosts에 id 1있나 찾고, id 2면 mainPosts에 id 2 있나 찾고 해서요. 2중반복문이 됩니다.

nan84203857's profile image
nan84203857

asked

Ask a question