Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. //변경 전
  2. //context를 통해 value객체를 전달
  3. const TodoContextProvider = ({ children }) => {
  4. const [todos, dispatch] = useReducer(reducer, []);
  5.  
  6. //생략..
  7. return (
  8. <TodoContext.Provider value={{ loading, warningVisible, todos, dispatch, todoCount, doneCount }}>
  9. {children}
  10. </TodoContext.Provider>
  11. );
  12. };
  13.  
  14. //context로부터 value객체를 받아서 사용(value객체가 매번 새로 생성되므로 TodoInput도 새로 렌더링됨)
  15. const TodoInput = () => {
  16. const { dispatch } = useTodoContext();
  17.  
  18. //생략..
  19. }
  20.  
  21. //---------------
  22.  
  23. //변경 후
  24. //context를 둘로 나누어서 value에 dispatch를 값으로써 전달
  25. const TodoContextProvider = ({ children }) => {
  26. const [todos, dispatch] = useReducer(reducer, []);
  27.  
  28. //생략..
  29. return (
  30. <TodoContext.Provider value={{ loading, error, todos, todoCount, doneCount }}>
  31. <DispatchContext.Provider value={dispatch}>
  32. {children}
  33. </DispatchContext.Provider>
  34. </TodoContext.Provider>
  35. );
  36. };
  37.  
  38. //context로부터 함수를 받아서 사용(todos가 바뀌더라도 dispatch는 변함이 없어서 렌더링되지 않음)
  39. const TodoInput = () => {
  40. const dispatch = useDispatch();
  41.  
  42. //생략..
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement