묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React로 NodeBird SNS 만들기
댓글의 댓글을 달려면 어떻게 해야되나요?
강의에서 MainPosts는 MainMessage로 Comments는 MainContents로 치환을 해서 대화목록 만들고 그 안에서 글을 작성하는 건 되는데 그 글에서 댓글을 다는 게 안되서 질문 드립니다 그 글에서 댓글은 Comments로 정의했고 reducers/message.js Comment 부분 export const initialState = { mainMessages: [{ id: 1, User: { id: 1, name: '이수현', }, Others: [{ id: 2, name: '김민지', }, { id: 3, name: '이우리', }], mainContents: [{ id: 1, User: { id: 2, name: '이수현', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, content: '안녕', img: 'https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1952&q=80', Comments: [], }, { id: 2, User: { id: 1, name: '김민지', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, content: '안농', img: 'https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1952&q=80', Comments: [], }], }], imagePaths: [], addMessageErrorReason: '', isAddingMessage: false, MessageAdded: false, isAddingContent: false, addContentErrorReason: '', contentAdded: false, isAddingComment: false, addCommentErrorReason: '', commentAdded: false, } const dummyContent = { id: 3, User: { id: 6, name: '김하나', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, content: '더미 댓글입니다.', img: 'https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1952&q=80', Comments: [], createdAt: new Date(), } case ADD_COMMENT_REQUEST:{ return{ ...state, isAddingComment: true, addCommentErrorReason:'', commentAdded: false, }; } case ADD_COMMENT_SUCCESS:{ const messageIndex = state.mainMessages.findIndex(v => v.id === action.data.messageId); const message = state.mainMessages[messageIndex]; const contentIndex = message.mainContents.findIndex(v => v.id === action.data.contentId); const content = state.mainBoards[contentIndex]; const Comments = [...content.Comments, dummyComment]; const mainContents = [...state.mainContents]; mainContents[contentIndex] = {...content, Comments}; return{ ...state, isAddingComment: false, mainMessages, mainContents, commentAdded: true, }; } case ADD_COMMENT_FAILURE:{ return{ ...state, isAddingComment:false, addCommentErrorReason: action.error, }; } sagas/message.js function addCommentAPI(){ } function* addComment(action) { try{ yield delay(2000); yield put({ type: ADD_COMMENT_SUCCESS, data: { messageId: action.data.messageId, contentId: action.data.contentId, }, }); }catch (e) { yield put({ type: ADD_COMMENT_FAILURE, error: e, }); } } function* watchAddComment() { yield takeLatest(ADD_COMMENT_REQUEST, addComment); } pages/messageCard.js return ( <div> {message.mainContents.map((v) => { return ( <> <Comment actions={[ <span key="comment-basic-like"> <Tooltip title="Like"> {React.createElement(action === 'liked' ? LikeFilled : LikeOutlined, { onClick: like, })} </Tooltip> <span className="comment-action">{likes}</span> </span>, <span key=' key="comment-basic-dislike"'> <Tooltip title="Dislike"> {React.createElement(action === 'liked' ? DislikeFilled : DislikeOutlined, { onClick: dislike, })} </Tooltip> <span className="comment-action">{dislikes}</span> </span>, // <span key="comment-basic-reply-to"><Icon type ="message" key="message" onClick={onToggleComment}/></span>, <span key="comment-basic-reply-to"> <Tooltip title="Reply"> {React.createElement(action === 'reply' ? MessageFilled : MessageOutlined, { onClick: () => { setContentIdState(v.id); console.log(v.id); }, })} </Tooltip> {/* <span className="comment-action">{dislikes}</span> */} </span>, ]} author={<a>{v.User.name}</a>} avatar={ <Avatar src={v.User.avatar} // alt="Han Solo" /> } content={ <p> {v.content} </p> } datetime={ <Tooltip title={moment().format('YYYY-MM-DD HH:mm:ss')}> <span>{moment().fromNow()}</span> </Tooltip> } > {/* {v.id == contentId?<MessageCardComment content={v} key={v}/>: <></>} */} {v.id == contentId ? <> <Form onSubmit={(e) => { e.preventDefault(); if (!user) { return alert('로그인이 필요합니다.'); } dispatch({ type: ADD_COMMENT_REQUEST, data: { messageId: message.id, contentId: v.id, }, }) }}> <Form.Item> <Input.TextArea rows={4} value={commentText} onChange={onChangeCommentText} /> </Form.Item> <Button type="primary" htmlType="submit" loading={isAddingComment}>입력</Button> </Form> <List header={`${v.Comments ? v.Comments.length : 0} 댓글`} itemLayout="horizontal" dataSource={v.Comments || []} renderItem={item => ( <li> <Comment author={item.User.name} avatar={<Avatar>{item.User.name[0]}</Avatar>} content={item.content} // datetime={item.createdAt} /> </li> )} /> </> : <></>} </Comment> <Divider /> </> ) })} </div> ); 저렇게 MessageId하고 ContentId를 두개를 넘기나요? 넘겼는데 자꾸 FAILURE라고 떠서 그리고 저기서 원래 onSubmitCommentForm을 함수로 빼려고 했는데 그럼 v.id 범위를 벗어나서 안에다가 넣었는데 함수로 하고 싶으면 onSubmitCommentForm(v.id)를 넣어줘도 되는 건가요? 만약 저기서 댓글의 댓글을 추가한다고 하면 messageId, contentId, commentId가 다 필요한 건가요? 그럼 그 변수는 props 여러개로 넘기는 건가요? 아니면 저렇게 한페이지에 있어야되는 건가요..?
-
Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
JSON 오류
삭제된 글입니다
-
미해결퍼블리셔, 신입 프론트 개발자를 위한 실무에서 써먹는 실전 jQuery 설명서
강의 자료 소스는 다운받을 수 없나요?
강의 자료 소스는 다운받을 수 없나요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
보일러플레이트 강의 중에서
안녕하세요.유튜브 보일러 플레이트 강의 수강 중인 사람입니다. 강의 정말 잘보고 있는데 강의 중에 사용하신 ppt 파일을 혹시 받을 수 있을까요? 공부중인 학생이어서 참고해서 정리하려고 합니다!
-
디지털 포렌식 (Digital Forensic) 전문가 과정
dns usb open ssl 강의에서
삭제된 글입니다
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
print 문법 관련 질문입니다.
이번 수업과는 상관없지만 궁금해서 질문 드립니다. 오늘 수업에서 작성한 코드 중에 print('Car Detail Info : {} {}'.format(self._company, self._details.get('price'))) 위의 코드를 print(f'Car Detail Info: {self._company} {self._details.get('price')}') 로도 사용할 수 있다고 알고 있는데 다른 것은 다 적용이 되는데 {self._details.get('price')} 이부분에서 에러가 납니다. 혹시 f'' 로 활용할 때에는 .format()과 달리 활용 범위가 다른 건지 궁금합니다.
-
해결됨인터랙티브 웹 개발 제대로 시작하기
이벤트 위임
body에 바로 이벤트 위임을 하면 전체 다 쓸 수 있는데 그렇게 안하는 이유가 궁금합니다. .stage { width: 100vw; height: 100vh; background-color: #333; } 이랑 body { background-color: #333; } 같아 보이는데 웹 화면 전체를 다 쓰더라도 body에 css를 적용하지 않고 div로 한 번 감싸고 쓰는게 규칙인가요?? 너무 기초적인 질문 같아 죄송합니다..ㅠ
-
미해결대세는 쿠버네티스 (초급~중급편)
dashboard 접속 시 SKIP 불가한 현상
안녕하세요. 최근에 강의 수강하면서 열공하고 있습니다. 강의 다 듣고 실습을 하고 있는 중에 대시보드 로그인 화면에서 SKIP이 되지 않아 어려움에 있습니다. 강의 자료실에 있는 내용으로 진행하고 있습니다. master 1대, 노드 2대로 구성했구요. 클러스터도 잘 구성되어 있고, cailco, coredns 등도 정상적으로 Running 상태입니다. 도움 부탁드립니다. 감사합니다.
-
미해결Node.js로 웹 크롤링하기
4-3 강좌 'src' of null 에러 질문입니다.
안녕하세요 강사님 깃허브 가서 강사님께서 작성하신 현재 nDTlD로 class가 되어있어서 변경해서 넣어보았습니다. 그리고 아래 같은 질문에 강사님 답변이 있어서 강사님 코드에서 while (result.length <= 30) { <- 이 부분 바로 앞에 await page.waitForSelector('.nDTlD'); 를 넣어보고 해보았습니다. https://github.com/ZeroCho/nodejs-crawler/blob/master/7.image-scroll/index.js (강사님 코드 주소입니다.) 하지만 제가 해본 결과로는 같은 에러가 발생하여 질문을 드립니다. 혹시 한번만 더 확인을 해 주실 수 있을까요?? 제가 해보기로는 querySelectorAll('.nDTlD img.2zEKz') 을 해서 src를 검출했을 떄는 에러가 나지 않지만 .nDTlD로 먼저 추출한 후 evaluate 함수 안에서 src 작업을 하면 에러가 나는 것 같습니다. 시간 나실때 한번 확인 해 주시고 답변해주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품등록 에러
안녕하세요 항상 수업 열심히 듣고 있습니다! 상품등록 구현에 대해서 여쭤볼 것이 있는데요. 상품등록 컨트롤러를 작성하고 상품 정보 입력 후 submit 버튼을 누르면 다음과 같은 페이지로 이동합니다. DB를 보니 첫번째 저장 상품만 들어가있고 그 뒤에 상품들은 들어가있지 않습니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Mar 14 00:40:31 KST 2020 There was an unexpected error (type=Internal Server Error, status=500). could not execute statement; SQL [n/a]; constraint ["PRIMARY KEY ON PUBLIC.ITEM(ITEM_ID) ['B', 1, STRINGDECODE('\ub77c\uc774\uc5b8'), 10000, 2, STRINGDECODE('\uce74\uce74\uc624'), '111222333', NULL, NULL, NULL, NULL]"; SQL statement: insert into item (name, prices, stock_quantity, author, isbn, dtype, item_id) values (?, ?, ?, ?, ?, 'B', ?) [23505-200]]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement 계속 찾아봐도 무엇 때문에 오류가 난 것인지 모르겠어서요ㅠㅠ 답변 기다리겠습니다. 감사합니다! +) 오늘 회원가입 기능을 다시해보니 회원가입도 이 에러 페이지로 넘어갑니다. SQL문이 처리가 안되는 것 같습니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Mar 14 19:07:34 KST 2020 There was an unexpected error (type=Internal Server Error, status=500). could not execute statement; SQL [n/a]; constraint ["PRIMARY KEY ON PUBLIC.MEMBER(MEMBER_ID) [1, STRINGDECODE('\uc11c\uc6b8'), STRINGDECODE('\uc2b9\ubc29\ub098\uae38'), '12345', STRINGDECODE('\uc774\uc9c4\uc8fc')]"; SQL statement: insert into member (city, street, zipcode, name, member_id) values (?, ?, ?, ?, ?) [23505-200]]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
로그아웃이안되요
로그아웃 버튼을 눌렀는데 아무런 증상이 나타나지 않습니다. 처음 로그인할때는 제대로 TabPage로 가는데 AccoutPage에서 로그아웃을 눌렀는데 다시 LoginPage로 가지지않네요 onPressed: () { FirebaseAuth.instance.signOut(); _googleSignIn.signOut();},
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
while(scanf("%c", &ch) != -1)
#include <stdio.h> #include <vector> #include <stack> #include <algorithm> using namespace std; int main(int argc, char** argv) { //freopen("input.txt", "rt", stdin); char ch; stack<char> s; while(scanf("%c", &ch) != -1){ if(ch == '(') s.push(ch); else if(ch == ')'){ if(s.empty()){ printf("NO"); return 0; } s.pop(); } } if(s.empty()) printf("YES"); else printf("NO"); return 0; } 테스트케이스 1번, 5번 경우에서 타임 리미트가 발생합니다ㅠㅠ. scanf("%c", &ch) != -1) 이 표현이 잘못된 표현인지 궁금합니다. scanf로 읽는 동시에 처리하는 거랑 배열로 다 읽은 후 처리하는데 차이가 있나요?? 항상 좋은 강의 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
CQRS
안녕하세요. 정말 좋은 강의 항상 잘 듣고 있습니다. Repository save 메서드는 Member 를 반환하기보다는 id를 반환하는 식으로 구성하셨는데 이게 기본편에서 커맨드와 커리를 분리한기위함이라고 하셨던걸로 기억합니다. 이론적으로는 조회와 insert update 등을 분리한다고 는 이해했는데 실제 웹 어플리케이션 개발떄 이로써는 얻는 이점에 대해 좀더 자세히 들을수있을까요? 그리고 실제 실무에서는 어느정도까지 분리해서 보통 사용하나요?
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
AI (7/12) 질문입니다.
var direction = target.position - eyeTransform.position; direction.y = eyeTransform.forward.y; 여기서 forward.y가 이해가 안 갑니다;; 그냥 position.y하면 되지 않나요? 그리고 forward라는 게 정확히 어떤 건지 감이 잘.. eyeTransform의 앞면이라는 게, 로컬 좌표로서 z방향 단위벡터로서 글로벌 좌표로 표시되는 거라는 건가요? 아어 복잡쓰 ㅠㅠ
-
해결됨대세는 쿠버네티스 (초급~중급편)
ingress 를 찾는 원리?
안녕하세요! 강의 잘 보구 있습니닷 궁금한 것이... nginx 네임스페이스 안의 pod는 어떻게 default 네임스페이스 안에 들어있는 ingress를 찾을 수 있나요? 네임스페이스와 상관 없이 클러스터 안의 모든 ingress를 nginx가 찾아내는 것인가요?
-
해결됨[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
라즈베리파이에서 실행하기
안녕하세요 RBP_DL21_YOLO_car를 노트북으로 실행할 때에는 이상이 없었는데 라즈베리파이에서 실행하니 이런 에러가 뜹니다. File "RBP_DL21_YOLO_car.py", line 21, in <module> height, width, channels = img.shape AttributeError: 'NoneType' object has no attribute 'shape' 어떻게 해결해야 할까요?
-
미해결파이썬을 이용한 IT 해킹과 보안
IE8-WinXP.ova를 어디서 다운받아야 되는지 모르겠어요
강사님께서 IE8-WinXP.ova를 다운 받는 링크를 주셨다는데 어디 있는지 모르겠어요...
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
강의자료 파일이 안 열리네요
(사진)
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
이제 막 시작하는 새내기 입니다. 강의를 보고 따라했는데 이런 경고창이 뜨면서 실행이 안되네요...왜그럴까요?
(사진)
-
미해결신은 직장을 안 다녀!(신의 직장 퇴사 후 1년)
안녕하세요 잘 들었습니다. :)
혹시 종교 교리 체득 부분에대해서 궁금한데 어떤 종교 교리를 말씀하시는 거고 어떻게 배우셨는지 좀 알 수 있을까요?? :)