inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

댓글질문있습니다

208

지니

작성한 질문수 11

0

댓글삭제 기능도 해보고싶어서 사가 리듀서 백라우트 프론트 코드 작성해봤어요~

401Unauthorized 에러뜨는데 어떤 부분을 고쳐야 할까요?

// 댓글삭제하기
    const onRemoveComments = useCallback(userId => () => {
        alert('댓글을 삭제하시겠습니까?');
        dispatch({
          type: REMOVE_COMMENT_REQUEST,
          data: userId,
        });
   });

< post.js/reducers >

 // 댓글 지우기
        case REMOVE_COMMENT_REQUEST: {
            return {
                ...state,
            };
        }
        case REMOVE_COMMENT_SUCCESS: { 
            const postIndex = state.mainPosts.findIndex(v => v.id === action.data.postId);
            const post = state.mainPosts[postIndex];
            const Comments = post.Comments.filter(v => v.id !== action.data.comments );
            const mainPosts = [...state.mainPosts];
            mainPosts[postIndex] = { ...postComments };
            return {
                ...state,
                mainPosts,
            };
        } 
        case REMOVE_COMMENT_FAILURE: {
            return {
                ...state,
            };
        }

< post.js/sagas >

// 댓글 지우기
function removeCommentsAPI(postId) {
  return axios.delete(`/post/${postId}/comment`);
}  
function* removeComments(action) {
  try {
      const result = yield call(removeCommentsAPIaction.data);
      yield put({
      type: REMOVE_COMMENT_SUCCESS,
      data: {
          postId: action.data,
          comments: result.data,
      },
      });
  } catch (e) {
      console.error(e);
      yield put({
      type: REMOVE_COMMENT_FAILURE,
      error: e,
      });
  }
}

-백

<post.js/routes>

// 댓글삭제하기 routes
router.delete('/:id/comment'isLoggedInasync (reqresnext=> {
  try {
    const comment = await db.Comment.findOne({ where: { id: req.params.id } });
    if (!comment) {
      return res.status(404).send('댓글이 존재하지 않습니다.');
    }
    await db.Comment.destroy({ where: { id: req.params.id } });
    res.send(req.params.id);
  } catch (e) {
    console.error(e);
    next(e);
  }
});

react javascript

답변 2

0

제로초(조현영)

401은 인증받지 않았다는 것입니다. 즉 로그인되지 않았다는 것이고요 프론트애서 백으로 쿠기가 전달 안된 겁니다. axios에서 withCrdentials 옵션 빠뜨리셨습니다.

0

지니

버튼 만들어서 해주었어요

<button type="button" className="remove" onClick={onRemoveComments(post.id)} >
             REMOVE
</button>

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

482

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

447

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

433

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

975

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1