inflearn logo
강의

講義

知識共有

[リニューアル] ReactでNodeBird SNS作成

질문있습니다

解決済みの質問

264

nan84203857

投稿した質問数 63

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' …}

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

redux express nodejs react Next.js

回答 3

0

zerocho

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

0

nan84203857

제로초님

        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

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

넥스트 버젼 질문

0

77

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

174

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

372

1

sudo certbot --nginx 에러

0

1272

2

Minified React error 콘솔에러 (hydrate)

0

469

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

325

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

381

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

337

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

286

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

237

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1