묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실무 중심! FE 입문자를 위한 React
[17-3. Redux로 데이터 관리]에서 Store에 슬라이스 리듀서 추가하기 질문합니다.
Redux 공식 사이트의 튜토리얼에 따르면, 슬라이스에서 리듀서를 익스포트 하고 스토어에 리듀서를 다음 예제와 같이 등록하는 데..// surveySlice.js ... 생략 ... export default surveySlice.reducer; // surveySlice 리듀서를 익스포트 하고서.. // /stores/index.js import surveyReducer from './survey/surveySlice'; export default configureStore({ reducer: { survey: surveyReducer // 리듀서 등록 } }) 강사님 같은 경우는 아래와 같이 리듀서 등록에 직접 surveySlice를 추가했는데 리덕스 튜토리얼과 차이가 뭔가요??import {surveySlice} from './survey/surveySlice'; export default configureStore({ reducer: { survey: surveySlice // 슬라이스 등록 } })
-
해결됨실무 중심! FE 입문자를 위한 React
[16-2. 설문 리스트 컴포넌트 구현] Table 의 key 설정은 rowKey 속성을 사용합니다.
[16-2. 설문 리스트 컴포넌트 구현] Table 의 key 설정은 rowKey 속성을 사용합니다.rowKey 속성을 사용하여 key로 지정할 컬럼을 지정합니다. // primary key is id return <Table rowKey="id" />; // or return <Table rowKey={(record) => record.id} />;
-
미해결실무 중심! FE 입문자를 위한 React
최신버전 node.js 관련 문의
최신 버전 node.js 를 설치 하고 진행하니 create-react-app 에서 자꾸 문제가 생기는거 같습니다. 이부분에 대해 어떻게 진행해야하나요??
-
해결됨실무 중심! FE 입문자를 위한 React
Ch15-5. 라우터 적용에서 최근 react-router 설정과 달라서 수정했습니다.
react-router v7을 설치하고 다음과 같이 수정하여 처리하였습니다.function MainLayout() { return ( <Layout style={{ minHeight: '100vh' }}> <Layout> <Sider collapsible> <div className="logo" style={logoStyle} /> <Menu theme="dark" mode="inline" defaultSelectedKeys={['m1']}> <Menu.Item key="m1">설문조사관리</Menu.Item> </Menu> </Sider> <Layout> <Header style={{ padding: 0, background: 'white' }}>HEADER</Header> <Content> <Outlet /> {/* chidren 대신 아울렛 사용 */} </Content> </Layout> </Layout> </Layout> ); } function App() { return ( <> <Routes> <Route path="/" element={<MainLayout />}> <Route index element={<h1>Home Page</h1>} /> <Route path="list" element={<ListPage />} /> <Route path="builder" element={<BuilderPage />} /> </Route> </Routes> </> ); }
-
미해결실무 중심! FE 입문자를 위한 React
git 명령어를 찾을 수 없다고 하는데 git을 따로 설치해야 하는건가요?
PS D:\reactWorkspace\memo-project> git reset --hardgit : 'git' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.위치 줄:1 문자:1+ git reset --hard+ ~~~ + CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundExceptionPS D:\reactWorkspace\memo-project>
-
미해결실무 중심! FE 입문자를 위한 React
4-3 아코디언 컴포넌트 만들기 링크 수정요청
4-3 아코디언 실습코드 링크가4-2 렌더링 과정 실습코드 링크랑 같습니다.pdf 파일 내 4-3 실습 링크변경 요청드리며, 변경된 링크 공유 부탁드립니다.
-
미해결실무 중심! FE 입문자를 위한 React
[10-2] react-router 강의에서 BrowserRouter 를 감싸지 않고 페이지가 나오는 게 맞나요?
10-2 강의 내용에서 BrowserRouter 를 임포트 하고 나서 사용 안하고 Route를 구성하였습니다. 강의 내용대로 페이지 화면이 나와야 되는 데 에러가 발생합니다. BrowserRouter를 감싸지 않고서도 페이지 화면이 나오는 게 맞나요?<div className="App"> <Routes> <Route path="/" element={<PageA />} /> <Route path="/2" element={<PageB />} /> </Routes> </div>
-
미해결실무 중심! FE 입문자를 위한 React
Chapter 4-2 React랜더링과정 설명중 자료가 틀리게 적어져있네요..
Chapter 4-2 React랜더링과정 설명중 강의자료 코드 이미지가 잘못되있어요..강의자료 (처음부터 ~ 2분까지나오는 내용)const [value, setValue] = useState(0);........중간생략 setValue((state) => state +1) 로 되어있는데.. => 틀린부분onClick 이벤트를 실행할때마다 value값이 1씩 증가하도록 setValue 값을 설정했다고 하는데.. setValue((value) => value +1) 로 되야하는건 아닌가요??
-
미해결실무 중심! FE 입문자를 위한 React
학습노트 실습코드 링크 수정해주세요.
학습노트 pdf에서 4-2 실습코드 링크와 4-3 실습 코드 링크가 동일합니다. 수정 부탁드립니다. 그리고 5-1 강의에서 HTML과 리액트의 onclick/onClick 설명해주시는 화면에 둘 모두 onclick으로 되어 있음을 제보 드립니다.
-
미해결실무 중심! FE 입문자를 위한 React
SuryveyPie 기획서 어디에 있나요?
제목 그대로 SurveyPie 기획서 pdf를 어디서 받아야 하는지 모르겠습니다.처음에 받은 "학습노트_리엑트기초심화.pdf" 파일에서는 디자인 가이드와 코드만 존재합니다. 기획서 어디서 받을 수 있는지 알려주시면 감사하겠습니다.
-
미해결실무 중심! FE 입문자를 위한 React
swr과 recoil을 같이 쓰려면 어떻게 쓰면 될까요?
안녕하세요. 유익한 강의 감사합니다. 강의를 다 듣고나니 recoil 과 swr을 같이 쓰고 싶다는 생각이 들어서 redux를 썼던 admin 페이지를 swr과 recoil 조합으로 만들어보다가 막혀서 질문드립니다.. pages/ListPage.js에서 const { data, error, mutate } = useSWR( "/surveys?_sort_id&_order=desc", fetcher, ); const [survey, setSurvey] = useCurrentQuestion(); // recoil setSurvey(data);이렇게 swr로 불러온 데이터를 set으로 넣어주고 다른 페이지에서 recoil로 데이터를 불러서 써도 되는지 궁금합니다. 아니면 커스텀 훅에서 swr을 사용해도 괜찮을까요?
-
미해결실무 중심! FE 입문자를 위한 React
setAnswers 에 함수가 들어가도 괜찮은건가요?
안녕하세요. 유익한 강의 감사합니다.const useCurrentAnswer = () => { const step = useStep(); const [answers, setAnswers] = useRecoilState(answersState); const answer = answers[step]; const setAnswer = (newAnswer) => { setAnswers((answers) => { // 새로운 답변 렌더링 (answers 는 그냥 변수명 ) const newAnswers = [...answers]; // 기존 답변목록을 복붙함 (불변성의 법칙을 지켜라 / 기존 데이터는 건들지마..) newAnswers[step] = newAnswer; // 새로 작성한 답변을 복붙한 배열에 넣어줌 return newAnswers; // 새로운 답변 목록 반환 }); }; return [answer, setAnswer]; };에서 answer - String / 답변answers - String[] / 답변 목록 setAnswer - answer를 렌더링해주기위한 함수 / setAnswer(param) { answer = param }setAnswers - answers를 렌더링해주기위한 함수 / setAnswers(param) { answers = param } 로 이해되는데 그렇다면 setAnswers에 함수가 들어가도 괜찮은건지 궁금합니다. setAnswers((answers) => { const newAnswers = [...answers]; newAnswers[step] = newAnswer; return newAnswers; });는 setAnswers(화살표함수) { answers = 화살표함수} 이고answers는 화살표함수가 되는게 아닌가요? answers는 함수가 되어 입력된값을 리턴해서 바로 answers에 할당되는건가요?아니면setAnswers에서 함수가 실행되어 리턴된 값이 answers에 할당되는 건가요??
-
미해결실무 중심! FE 입문자를 위한 React
4-3 클래스코드를 찾을 수가없습니다
4-3 아코디언 컴포넌트 만들기 실습 코드를 찾을 수 가없습니다 . 4-2코드 링크가 4-3 페이지에 들어있던데 수정부탁 드릴게여!
-
미해결실무 중심! FE 입문자를 위한 React
아래 랭크좀 보는법좀 알려주세요
코드 샌드박스링크를 알고 싶은데 자꾸 아래를 보래요 ㅠ근데 안보입니다ㅠㅠ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
SWR or axios 관련 질문이 있습니다.
프론트에서 백앤드 서버로 네트워크 요청시 요청 헤더에 보면 Connection: keep-alive 라고 표기 되는데 이 상태의 요청들이 많으면 서버가 부하가 큰다던가 할 수 있는 요지가 있을까요?프론트에서 보내는 저 api 상태의 요청이 많으면 문제가 생길수 있다는데프론트에서 요청시 팬딩이 걸리는 그런 상황에 요청을 끊을 수 있는 방법이 있을까요?(백엔드 서버에 어떻게히면 부담을 줄일수 있을까 고민중입니다;)
-
미해결Slack 클론 코딩[실시간 채팅 with React]
캐싱 궁금한점
새로 요청 보내는게 아니라 캐싱된 값을 사용한다구 하셨는데 강의내에서 '/api/users' 요청만 dedupingInterval 2초동안 캐싱되는 거고 `/api/workspaces/${workspace}/channels` 요청은 재요청 하는 것으로 이해해서 실습해보니 첫 실행시 users, channels, members 요청이 한번씩 실행되되고 이후에 2초간 캐싱 되는 건 refetchOnMount 같이 아예 다른 탭에 갔다가 돌아오는 경우 인 것 같습니다. 아무래도 제가 이해한 캐싱과 강의에서 말하는 캐싱이 다른 것 같아 질문남깁니다. 강의 경우 처럼 한 컴포넌트 내에서 useSWR 혹은 react-query의 useQuery를 사용하는 경우 자식 컴포넌트에서 사용하는 useQuery가 캐싱된 데이터를 사용한다고 이해해도 될까요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
useSwrInfinite 질문입니다.
안녕하십니까 제로초님 슬랙 클론코딩 강의를 보고 실시간 챗을 구현해보고 있습니다. useSwrInfinite를 사용하여 구현하고 있고, 요청주기에 대해 궁금한점이 생겼습니다. useSwr은 DedupingInterval을 사용해서 설정한 주기 동안은 탭 변환이 일어나도 재요청을 보내지않고 캐시된 값을 그대로 사용하는 것으로 이해하고 있습니다. 그런데 useSwrInfinite의 요청 주기를 잘 모르겠어서 공식문서를 읽어보니 initialSize = 1: 초기에 로드해야 하는 페이지의 수 revalidateAll = false: 항상 모든 페이지의 갱신 시도 revalidateFirstPage = true: always try to revalidate the first page persistSize = false: 첫 페이지의 키가 변경될 때, 페이지 크기를 1(initialSize가 설정된 경우 initialSize)로 초기화하지 않음 챗을 쳐서 실시간으로 채팅이 화면에 그려질 수 있는이유는 초기에 initialSize = 1 로 설정되어 있어서 이차원 배열의 첫번째 배열이 갱신되어서 그런 것일까요? 챗을 칠때마다 갱신된 데이터를 get 할 수 있어서 좋지만 서버에 얼마만큼(어느주기로) 요청을 보내는지 알고 싶습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
redux와 react-query 설정
다른 질문 들도 보다가 궁금한 점이 생겨 여쭤봅니다. 프로젝트에서 내에서 상태관리를 redux로 하고 server에서 데이터 패칭하는 부분을 (공부해 보니 server state라고 부르더군요) react-query(또는 swr)로 사용하려는 경우 설정을 어떻게 해야하나 궁금해서 검색해봤는데 마땅한 자료가 없어서 질문드려요 CRA기준으로 index.js에 import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; import reducer from "./reducer"; import { Provider } from "react-redux"; import { configureStore } from "@reduxjs/toolkit"; import { Global } from "@emotion/react"; import { GlobalStyle } from "./index.style"; import { QueryClientProvider, QueryClient } from "react-query"; const store = configureStore({ reducer }); const queryClient = new QueryClient(); ReactDOM.render( <Provider store={store}> <QueryClientProvider client={queryClient}> <App /> <Global styles={GlobalStyle} /> </QueryClientProvider> </Provider>, document.getElementById("root") ); 이런식으로 사용해서 reducer 함수 정의하고 각 컴포넌트에서 queryClient를 import해서 사용하는 건가요? 제로초님 강의 들으면서 react-query를 이제 막 공부하고 있는데 react-query가 내부적으로 contextAPI 사용한다고 알고있는데 redux랑 contextAPI를 같이 쓴다는게 정확히 감이 안잡히네요 제가 잘못알고 있는 부분이나 공부해야할 키워드를 알려주시면 감사하겠습니다.
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
강의소개에서
강의소개보면 swr(리덕스대체) 라고 나와있는데 swr도 리덕스처럼 상태관리를 하는건가요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
swr 관련 질문입니다.
SWR 관련 질문입니다. 1.x 사용 했을 때 mutate를 적용을 시켜 봤습니다. 강의 초반부에 로그 아웃 버튼을 달고 화면만 띄우고 swr로 불러온 데이터를 찍으면 /api/users 데이터가 있는 것을 확인 할 수가 있는데 login 후 workspace/channel 들어가면서 console로 찍어보니 최초에는 데이터가 있는 것으로 나오는데 한번 더 렌더링이 되는건지 workspace : {id :...}workspace: undefined 이렇게 나오던데 어떤 식으로 접근하면 좋을지 문의 드립니다. 혹시 몰라서 let count = 0; 0 : workspace : {id :...}1 : workspace: undefined 식으로 카운팅도 해 봤는데지렇게 찍혀서 어떻게 접근을 해야할지 몰라 문의 드립니다.