관련 챕터: Zustand 기본 사용법 2 질문 관련 부분: 4:34 ~ 6:20 질문 내용: 역할에 따라 컴포넌트를 분리하는 과정에서, count 값 변경 시 Controller 컴포넌트까지 리렌더링되는 이유에 대해 설명해주셨는데요. 제가 맞게 이해했는지 헷갈려서 질문 드립니다. count 값이 바뀔 때마다 Viewer , Controller 컴포넌트가 동시에 리렌더링된다. 버튼 태그를 포함하는 Controller 컴포넌트까지 리렌더링되는 이유는 1. Zustand는 store 안의 state 가 바뀌면 store 를 가져다 쓴 모든 컴포넌트가 다시 그 state 값을 반영하도록 리렌더링된다. 2. Controller 는 구조분해 할당으로 increase , decrease 만 쓴다고 해도, 훅이 반환한 객체 안에 count 도 포함돼 있으므로 count 가 바뀌면 Controller 도 리렌더링된다. 제가 맞게 이해한 걸까요?
useMutation에 대해 설명하실 때, createTodo라는 비동기 함수의 상태를 관리해야 하기 때문에 별도의 state를 만들어야 한다. 하지만, useMutation을 사용하면 이러한 상태까지도 관리해준다. 라고 설명해주셨는데 여기서 말씀하신 "비동기 함수의 상태 관리" 라는 것이 isLoading이나 isPending 이런 것들을 의미하는 걸까요??
zustand 강의에서 devtools 미들웨어를 사용하여 브라우저 도구 Redux 툴에서 Action 과 State 를 살펴보는데 강의 영상에서는 Action의 이름이 setSession 으로 나오는 데... 제 Redux 툴에서는 액션 명이 anonymous로 표시됩니다. 어떻게 액션명이 표시되는 지 궁금합니다. set 함수에서 액션명 표시하려면 이름을 주어 표시했는데 . 뭔가 다른가요 ? //... set({session, isLoaded: true}, undefined, 'setSession'); //...
서버쪽 코드의 .env 파일을 보면 JWT이 기본적으로 20분으로 설정되어 있는 것을 보았습니다. 예를 들어 JWT이 만료가 되고 이어서 진행을 하게 된다면, AuthRoute에 해당되는 경로들을 클라이언트에서는 여전히 접근이 가능하지만 서버에서 400번대를 응답합니다. 일반적으로 앱을 사용했던 경험을 생각하면 앱의 세션은 웹에 비해서 매우 길거나 백엔드에 대한 지식은 충분하지 않아 모르겠지만, 백엔드에서 새로 접속시 연장을 하는 등의 방법이 생각 나는데요 이런 경우에 클라이언트에서는 어떻게 처리를 해야하는지 아니면 실무적으로는 어떻게 처리하는 지 궁금합니다. 혹시라도 추가로 검색해서 공부할 수 있는 키워드가 있다면 알려주실 수 있을까요?
안녕하세요! 강의 잘 듣고 있습니다. (3.2) Zustand 기본 사용법 1 강의의 9분 21초경 에서 궁금한 점이 생겨 질문드립니다. 강의에서 get 메서드는 store(객체) 전체를 반환 한다고 설명하셨습니다. 그리고 set 메서드는 인자로 전달된 객체의 프로퍼티만을 갱신 한다고 하셨는데요. 그런데 아래 코드처럼 보면, set 내부에서는 따로 get() 을 호출하지 않아도 count 값을 바로 참조해 업데이트하고 있습니다. increase: () => { const count = get().count; // 여기서 store의 count 프로퍼티를 가져온다 set({ count: count + 1 }); // 그런데 여기서는 count를 직접 사용할 수 있다? } 제가 이해하기로는 store의 값을 변경하기 위해 프로퍼티를 참조할 때에도(여기서는 count: ) 먼저 get() 으로 현재 store의 참조를 얻은 뒤 수정해야 할 것 같은데, set({ count: count + 1 }) 처럼 직접 count를 갱신할 수 있는 이유 가 궁금합니다. 즉, set 은 내부적으로 get() 을 다시 호출해서 현재 store 상태를 알고 있는 건가요? 아니면 set 이 store 객체의 참조를 이미 가지고 있어서 가능한 건가요?
강사님, npx expo start를 입력후, a를 선택하면, 아래와 같이 에러 메시지가 나옵니다. 아래 이미지와 같이 pixel 9 pro가 정상적으로 설치되어 있는데, 뭐가 잘못된건지 모르겠어서 문의드립니다.ㅠ › Opening on Android... CommandError: No Android connected device found, and no emulators could be started automatically. Connect a device or create an emulator ( https://docs.expo.dev/workflow/android-studio-emulator ). Then follow the instructions here to enable USB debugging: https://developer.android.com/studio/run/device.html#developer-device-options . If you are using Genymotion go to Settings -> ADB, select "Use custom Android SDK tools", and point it at your Android SDK directory.
개발 환경 window node 18 기타 wifi 인터넷 환경 애뮬레이터를 띄워서 확인하고 싶은데요. npm start 안드로이드 스튜디오에서 안드로이드 애뮬레이터 실행 npm run andriod > matzip@0.0.1 android > react-native run-android info A dev server is already running for this project on port 8081. info Installing the app... > Task :app:installDebug Installing APK 'app-debug.apk' on 'Medium_Phone(AVD) - 16' for :app:debug Installed on 1 device. [Incubating] Problems report is available at: file:///C:/Users/hangy/Desktop/matzip/android/build/reports/problems/problems-report.html Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 30s 58 actionable tasks: 9 executed, 49 up-to-date info Connecting to the development server... info Starting the app on "emulator-5554"... Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.matzip/.MainActivity } 애뮬레이터 반응 없이 아래 하면 표시함. 도움 부탁드립니다. 환경 설정이 되어야 진도를 나가는데. 애뮬레이터가 아무런 반응이 없네요. 좋은 강의 감사합니다.
안녕하세요! 이제 절반 이상 수강중인 열혈 수강생입니다 !! 다름이 아니고, 올해, 어플 배포가 목표인데요 아바타 이미지는 저작권이 있기에 모두 제거하고 자체 제작으로 이미지 파일을 구성하여 다시 추가하려 합니다. 인강을 다 듣고 나서 제 아이디어를 첨가하고 아바타 이미지만 바꿔 출시해도 되는 부분일까요?