2주차 질답 #24
Replies: 5 comments 5 replies
-
4번 질문Q1. 리액트 컨텍스트를 사용할 때 장단점은 무엇인가요? Q2. 아래의 useStore 훅에서 selector를 사용한 이점은 무엇인가요? const useStoreSelector = (store, selector) => {
const [state, setState] = useState(selector(store.getState()));
useEffect(() => {
const unsubscribe = store.subscribe(() => {
setState(selector(store.getState()));
});
return unsubscribe;
}, [store, selector]);
return state;
}; |
Beta Was this translation helpful? Give feedback.
-
3번 질문
const App = () => (
<CalendarProvider initialValue={10}>
<TimeProvider1 initialValue={20}>
<TimeProvider2 initialValue={30}>
<SomeComponent />
</TimeProvider2>
</TimeProvider1>
</CalendarProvider>
); |
Beta Was this translation helpful? Give feedback.
-
1번 질문 Q. 리액트 Context api를 많이 사용해서 중첩이 많은 구조가 발생할 수 있습니다. 이 경우 어떤 방식으로 리팩토링할 수 있을까요?
Q. 리액트에서 리렌더링을 일으키는 훅은 무엇인가요? 또 리렌더링을 일으키는 훅을 사용하지 않으면 어떤 문제가 발생할까요? |
Beta Was this translation helpful? Give feedback.
-
2번 질문불필요한 리렌더링을 피하면서 컴포넌트가 필요로 하는 상태의 일부분만 사용하기 위해 useStoreSelector 훅을 만들었습니다. const store = createStore({ count1: 0, count2: 0})
const useStoreSelector = <T, S>(
store: Store<T>
selector: (state: T) => S
) => {
const [state, setState] = useState(()=> selector(store.getState()))
useEffect(()={
const unsubscribe = store.subscribe(()=> {
setState(selector(store.getState()))
setState(selector(store.getState()))
})
setState(selector(store.getState()))
return unsubscribe
}, [store, selector])
return state
} const SampleComponent = () => {
const state = useStoreSelector(
store,
(state) => state.count1
)
const inc = () => {
store.setState((prev) => ({
...prev,
count1: prev.count + 1
}))
}
} |
Beta Was this translation helpful? Give feedback.
-
Q1. 58페이지 App 컴포넌트에서 count2가 변경되면 리렌더링 될 Parent내 자식컴포넌트를 말하고 리렌더링 되는 이유를 설명해주세요. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
All reactions