묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
onCreate is not a function 에러
안녕하세요 이정환 강사님! 강의 정말 잘 듣고 따라서 열심히 만들고 있습니다 다름이 아니라 강사님 강의를 보고 따라서 만들다가 오류를 만났는데 오류 잡기가 너무 어려워서 질문 남겨요. 강의 39분 부터 시작되는 작성완료 부분에서 글을 쓰고 작성완료를 누르면 홈으로 이동은 하는데 글이 등록이 되지 않습니다 제가 작성한 오류 관련 부분 DiaryEditor.js, App.js 코드 남겨드립니다 DiaryEditor.js import { useNavigate } from "react-router-dom"; import { useContext, useRef, useState } from "react"; import { DiaryDispatchContext } from "./../App.js"; import MyHeader from "./MyHeader"; import MyButton from "./MyButton"; import EmotionItem from "./EmotionItem"; const emotionList = [ { emotion_id: 1, emotion_img: process.env.PUBLIC_URL + `/assets/emotion1.png`, emotion_descript: "best", }, { emotion_id: 2, emotion_img: process.env.PUBLIC_URL + `/assets/emotion2.png`, emotion_descript: "good", }, { emotion_id: 3, emotion_img: process.env.PUBLIC_URL + `/assets/emotion3.png`, emotion_descript: "not bad", }, { emotion_id: 4, emotion_img: process.env.PUBLIC_URL + `/assets/emotion4.png`, emotion_descript: "bad", }, { emotion_id: 5, emotion_img: process.env.PUBLIC_URL + `/assets/emotion5.png`, emotion_descript: "worst", }, ]; const getStringDate = (date) => { return date.toISOString().slice(0, 10); }; const DiaryEditor = () => { const contentRef = useRef(); // 오늘의 일기를 state에 mapping 하기 위한 state const [content, setContent] = useState(""); // 어떤 감정을 선택했는지 저장할 state const [emotion, setEmotion] = useState(3); const [date, setDate] = useState(getStringDate(new Date())); const { onCreate } = useContext(DiaryDispatchContext); // emotion을 클릭하면 수행할 함수 const handleClickEmote = (emotion) => { setEmotion(emotion); }; const navigate = useNavigate(); //작성완료 버튼의 기능 const handleSubmit = () => { if (content.length < 1) { contentRef.current.focus(); return; } //context length가 적절한 길이가 되었을때 onCreate 함수를 호출 onCreate(date, content, emotion); navigate("/", { replace: true }); }; return ( <div className="DiaryEditor"> <MyHeader headText={"write a diary"} leftChild={<MyButton text={"< back"} onClick={() => navigate(-1)} />} /> <div> {/* 역할은 div와 동일한데 이름만 다르다 */} <section> <h4>Date</h4> <div className="input_box"> {/* 날자 선택이 가능한 html 태그 */} <input value={date} onChange={(e) => setDate(e.target.value)} className="input_date" type="date" /> </div> </section> <section> <h4>Feeling</h4> <div className="input_box emotion_list_wrapper"> {emotionList.map((it) => ( <EmotionItem key={it.emotion_id} {...it} onClick={handleClickEmote} //emotion감정이 선택된 감정인지 아닌지를 알게하기 위한 prop // 선택된 emotion의 값과 같은 emtion = true, 같지 않은 emotion = false isSelected={it.emotion_id === emotion} /> ))} </div> </section> <section> <div className="input_box text_wrapper"> <textarea placeholder="How was your day?" ref={contentRef} value={content} onChange={(e) => setContent(e.target.value)} ></textarea> </div> </section> <section> <div className="control-box"> <MyButton text={"save"} type={"positive"} onClick={handleSubmit} /> </div> </section> </div> </div> ); }; export default DiaryEditor; App.js import React, { useReducer, useRef } from "react"; import "./App.css"; import { BrowserRouter, Route, Routes } from "react-router-dom"; import Home from "./pages/Home"; import New from "./pages/New"; import Edit from "./pages/Edit"; import Diary from "./pages/Diary"; const reducer = (state, action) => { let newState = []; switch (action.type) { case "INIT": { return action.data; } case "CREATE": { newState = [action.data, ...state]; break; } case "REMOVE": { newState = state.filter((it) => it.id !== action.targetId); break; } case "EDIT": { newState = state.map((it) => it.id === action.data.id ? { ...action.data, } : it ); break; } default: return state; } return newState; }; export const DiaryStateContext = React.createContext(); export const DiaryDispatchContext = React.createContext(); const dummyData = [ { id: 1, emotion: 1, content: "오늘의일기 1번", date: 1648633885549, }, { id: 2, emotion: 2, content: "오늘의일기 2번", date: 1648633885550, }, { id: 3, emotion: 3, content: "오늘의일기 2번", date: 1648633885551, }, { id: 4, emotion: 4, content: "오늘의일기 4번", date: 1648633885552, }, { id: 5, emotion: 5, content: "오늘의일기 5번", date: 1648633885553, }, ]; function App() { const [data, dispatch] = useReducer(reducer, dummyData); console.log(new Date().getTime()); const dataId = useRef(0); const onCreate = (date, content, emotion) => { dispatch({ type: "CREATE", data: { id: dataId.current, date: new Date(date).getTime(), content, emotion, }, }); dataId.current += 1; }; const onRemove = (targetId) => { dispatch({ type: "REMOVE", targetId }); }; const onEdit = (targetId, date, content, emotion) => { dispatch({ type: "EDIT", data: { id: targetId, date: new Date(date).getTime(), content, emotion, }, }); }; return ( <DiaryStateContext.Provider value={data}> <DiaryDispatchContext.Provider value={{ onCreate, onRemove, onEdit }}> <BrowserRouter> <div className="App"> <Routes> <Route path="/" element={<Home />} /> <Route path="/new" element={<New />} /> <Route path="/edit/:id" element={<Edit />} /> <Route path="/diary/:id" element={<Diary />} /> </Routes> </div> </BrowserRouter> </DiaryDispatchContext.Provider> </DiaryStateContext.Provider> ); } export default App;
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
self.함수() 관련 질문 드립니다.
안녕하세요 강사님 강의 잘 듣고 있습니다.ㅎㅎ 강의를 듣던 중 질문이 생겨서 글을 작성합니다. 1. 여기서 제가 언급한 self.minmax()가 작동이 되는 근거는 위의 minmax함수의 return이 self라서 가능한 건가요?? 2. 여기서 solver 함수를 실행했을 때 self.minmax()의 결과가 minmax()함수의 return 값이 self랑 return 값이 self.data인 것들이 동일한 데 그 이유가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 완전정복 로드맵을 따라가고 있습니다.
스프링 완전정복 로드맵을 따라가고 있습니다. 그런데 ,, JPA관련 강의를 먼저 수강하시기를 추천 하시는데 정확히 어떤순서로 로드맵을 따라가야 괜찮을지 궁금합니다. 프로젝트 경험은 없습니다.
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
깃헙 권한 요청 드립니다.
인프런 아이디 : nyjin@ncsoft.com 인프런 이메일 : nyjin@ncsoft.com 깃헙 아이디 : zacronan@naver.com 깃헙 Username : nyjin
-
미해결Express 튜토리얼 : 웹 서비스를 위한 핵심 API
5:30초때 app.post 부분 에러가 나요
app.post('/post/upload', (req, res) => { counter .findOne({name: "counter"}) .then((counterInfo) => { post .insertOne({ _id: counterInfo.postNum, title: req.body.title, contents: req.body.contents, date : new Date() }) .then(() => { counter .findOneAndUpdate( {name:"counter"}, { $inc : {postNum: 1}, } ) .then(() => { res.redirect("/"); }); }); }) .catch((err) => { console.log(err); res.send("글 저장에 실패"); }); }) 이렇게 했는데 에러가node:internal/errors:464 ErrorCaptureStackTrace(err); at new NodeError (node:internal/errors:371:5) at ServerResponse.setHeader (node:_http_outgoing:576:11) at ServerResponse.header (D:\inflearn-express\node_modules\express\lib\response.js:776:10) at ServerResponse.location (D:\inflearn-express\node_modules\express\lib\response.js:893:15) at ServerResponse.redirect (D:\inflearn-express\node_modules\express\lib\response.js:931:18) at D:\inflearn-express\index.js:38:13 at processTicksAndRejections (node:internal/process/task_queues:96:5) { code: 'ERR_HTTP_HEADERS_SENT' } [nodemon] app crashed - waiting for file changes before starting... 이렇게 나길래 찾아보니까 이미 응답을 보냈는데 한번더 응답을 보내려 할때 서버에서 충돌이 나서 오류가 나는거라고 하더라구요? 그래서 res.redirect("/"); 여기를return res.redirect("/"); 이렇게 고치니까 에러가안나는데 맞는건가요???
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
sasm 오류
첫 sasm강의에서 setting을 확인하라고 하면서 hello world가 출력이 안되는데 왜 그런건가요?
-
미해결눈떠보니 코딩테스트 전날
이렇게 해도되나요?
def going(stone, dog): list_n = []; for i in dog: print(i) cur_loc = 0 while cur_loc < len(stone)-1: print(cur_loc) stone[int(i["점프력"])-1] = stone[int(i["점프력"])-1] - int(i["몸무게"]) cur_loc = cur_loc + int(i["점프력"]) print("이동후", cur_loc) if stone[cur_loc]<0: # list_n.append("0") break if cur_loc >= len(stone)-1: list_n.append(i["이름"]) print(list_n) # for i in list_n: # if i == True: going(stone, dog)
-
해결됨대세는 쿠버네티스 (초급~중급편)
쿠버네티스 최신 버전 설치(vagrant file)가 완료된 상태에서 노드 개수를 늘릴 수는 없나요?
강사님, 유익한 강의 잘 듣고 있습니다. 혹시 이미 vagrant file로 설치된 상태에서, vm 개수를 늘릴 수 있을까요? vagrant file 코드를 진행중인 상태에서 변경하면 오류가 날까요? 세개의 노드를 더 설치하고 싶어서 여쭙니다! (최신버전_vagrant file로 환경 구축을 완료하고 여러 실습을 진행한 상태입니다.)
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
Texture를 만들어 줄 수 있는 경우의 수가 2가지 아닌가요?
33:56 부분에 실질적으로 텍스처를 만들어줄 수 있는 경우의 수가 3가지 라고 하셨는데 Create : 리소스 없이 코드로 CreateFromResource : 리소스로 이렇게 2가지 아닌가요? 나머지 한가지는 무엇인지 헷갈립니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스택프레임으로 이해를 못하겠어요
직접 그림그려가며 하고 있는데 이해가 좀 안돼요.. DFS(L+1, sum+arr[L]);가 계속 호출돼서, 결국 스택에 차례대로 쌓일텐데, 만약 L===n이 되었을 때 if문에 만족하지 못하면 바로 끝나고, 스택에 쌓였던 게 다시 pop되는거까진 이해했어요. 그런데 그 이후가 이해가 안돼요... 줄기가 어떤 순서로 가는지 궁금해서 미치겠어요 ㅜ 20분을 들여다봐도 이해가..... ㅜㅜ
-
미해결
How To Purchase Cryptocurrency Stock USA, U.K, Australia, Canada
Here is our rundown of the 10 best digital currency trades and contributing or exchanging stages. The cyrpto offers that show up on this site are from organizations buy cryptocurrency exchange from which The College Investor gets remuneration. This remuneration might affect how and where items show up on this site (counting, for instance, the request in which they show up). The College Investor does exclude all digital money trades or all crypto offers accessible in the commercial center.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
컬렉션 페치 조인 시 팀A가 2번 나오는 이유..?
컬렉션 페치 조인을 할 때 조회 결과가 증가하는 건 이해가 되는데 왜 List에 2번 들어가는 지 이해가 안됩니다 ㅠㅠ... 결과 리스트에는 각각 2개의 값, 총 4개의 값을 가지고 있는건가요..?
-
해결됨실습으로 배우는 OAuth 2.0 개념 원리, 그리고 해킹과 보안
Friends 로그인 시도 시 오류 발생
안녕하세요. 기능 테스트 강의를 보며 Friends 로그인 시도 시 동의화면 이후에 다음과 같은 오류가 발생하며 정상적으로 리다이렉션되지 않습니다. Notice: Undefined index: access_token in C:\Bitnami\wampstack-7.3.29-0\apache2\htdocs\wgw_website\oauth\callback.php on line 11Notice: Undefined index: refresh_token in C:\Bitnami\wampstack-7.3.29-0\apache2\htdocs\wgw_website\oauth\callback.php on line 12Notice: Undefined index: refresh_token in C:\Bitnami\wampstack-7.3.29-0\apache2\htdocs\friends_oauth\oauth\token.php on line 36{"token_type": "Bearer", "access_token": "토큰값", "refresh_token": "토큰값"} 액세스토큰과 리프레스 토큰이 정상적으로 발급되었으나 리다이렉션될 때 session에 실리지 않는 것 같은데 해결방안 좀 확인 부탁드려요. db 확인해보니 관련 테이블에는 토큰값이 잘 들어갔습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
컨트로러에서 의존관계주입
안녕하세요 한가지 궁금한 것이 있어서 글을 남깁니다. 다름이 아니라 ItemValidator에 @Primary를 추가하고 다음 과 같이 의존관계 주입을 하면 안되나요? 동작은 정상적으로 하는 것 같은데 .. 밑의 사진과 같이 해놓을 경우 문제되는 부분이 있을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
질문이 있습니다.
제 방식대로 이미지 포함해서 수정하기 짜는중인데 질문이 두 개 있습니다. 1. firstImage <button onClick={onRemoveImage(i)}>제거</Button> 클릭시 해당 firstImage 에 있는 i값을 제외하고 filter로 가지고와서 해당 화면의 삭제 이외의 것들을 가지고 올껀데 dispatch 말고 어떻게 filter 된 값이 화면에 뿌려지게 해야할까요? firstImage 는 게시물의 기존 이미지 이고 imageUpdateState 는 firstImage 일때는 dispatch 안보내고 자체적으로 필터처리 해주기 위한 state 값입니다. 필터 처리는 되는데 삭제처리 한 후의 값 들을 이제 화면에 뿌려지면서 해당 화면에 보여줘야하는데 필터는되지만 화면 리렌더링이 안되어서 값이 안바뀌는 것같아요 어떻게 해야 할까요? 그래서 제가 알기론 state값이 바뀌면 리렌더링 되니까 setTest로 test 해보니 리렌더링은 되는 것 같은데 아래 console.log firstImage가 undefine가 나오는데 음.... 2. 이미지 삭제 적용 관련 dispatch 한 후 useSelctor로 받아온 데이터가 수정되어서 리렌더링 되는건가요?
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
깃헙 권한 요철 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐 ! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 인프런 아이디 : ais04134@naver.com인프런 이메일 : ais04134@naver.com깃헙 아이디 : ais04134@pukyong.ac.kr 깃헙 Username : geonhyeon park
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
오른값 참조 활용방식
수업을 들으면서 오른값 참조를 어떻게 활용할 수 있는 생각해봤는데 그럼 파티원들이 단체로 던전에 입장을했고 그 던전에서만 사용되는 특정 장치나 아이템이 있는경우 던전 함수에서 임시 객체로 장치를 생성하고 플레이어들이 하나만 존재하는 그 장치의 소유권을 주고 받으면서 이용하는 구현을 할때 활용 할 수 있는건가용??? 함수 인자로 임시객체를 생성하니 알아서 스택에 생성되고( 던전 함수 내부에서 생성할 필요 없음)+ 후에 신경써서 정리해주지 않아도되는 편리함에 사용하는건가요???
-
해결됨스프링 웹 MVC
Event`Xxx`Controller 분리할때의 기준에 관한 질문입니다.
CRUD 의 C , U 기능을 합한Event`Update`Controller 로 공통기능을 추출 하셨는데요, 그렇다면, 컨트롤러 핸들러 들의 공통기능 묶는 기준은,HttpMethod 종류에 따라 분리하는 방식이 일반적인지, 어떤식으로도 또 나눌수 있는지 궁금합니다. 읽어주셔서 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
requestParamV4
강의내용처럼 @RequestParam을 아예 생략하는 경우에 알아서 인식한다고 하셨는데 만약 파라미터를 그 쿼리파라미터값 말고 따로 파라미터를 생성해서 넘겨줄때는 무슨 어노테이션을 써야되나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Union메서드 반환타입
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업을 듣기전에 수도코드로 간단하게 작성해보았습니다. Union () 메서드를 작성할 때 반환타입을 int로 주고 return 값도 int로 적었는데 왜 This method must return a result of type int 에러가 발생하는지 모르겠습니다. 혹시 Union()는 항상 void만 리턴 하나요?