Когда я должен использовать useMemo? Что такое «дорогой компонент»? - PullRequest
0 голосов
/ 13 октября 2019

Я немного озадачен тем, как правильно использовать useMemo. Читая здесь ( Должен ли я обернуть каждую опору с помощью useCallback или useMemo, когда использовать эти хуки? ), это говорит о том, что я должен использовать это для дорогих детей , так что это значит точно? Может кто-нибудь привести пример из реальной жизни?

Я создал новый проект React, играя с двумя разными подходами.

Вы можете проверить полный код здесь (на той же странице вы можете переключиться с одного метода на другой):

https://codesandbox.io/s/lucid-rgb-fz60n

В этом первом примере я передаюAppContext объект, содержащий userState и setUserState (зарегистрирован или нет).

  const [userState, setUserState] = React.useReducer(reducer, initialUserState);

  const appState = {
    userState,
    setUserState
  }

  <AppContext.Provider value={appState}>

Будет ли этот подход приемлемым?

Во втором примере я использую useMemo:

const [userState, setUserState] = React.useReducer(reducer, initialUserState);

  const value = React.useMemo(() => {
    return {
      userState,
      setUserState
    };
  }, [userState]);

<AppContext.Provider value={value}>

Так что я полагаю, что использовать Memo во втором случае это не лучший выбор, так как дети не стоят дорого . Это правильно?

...