Может вернуть компонент напрямую из useReducer? - PullRequest
0 голосов
/ 30 мая 2019

Могу ли я использовать useReducer для возврата компонента как сложного состояния?

useReducer всегда используется для управления объектом данных как состоянием, после изменения состояния компонент будет перерисован. Преимущество возврата компонента из useReducer заключается в том, что мы можем поместить всю логику в функцию редуктора, и нет необходимости основываться на изменении логики состояния для визуализации конкретного.

Я не хочу писать такой код:


() => {
  const [state, dispatch] = useReducer((prevState, action) => {
    const {type, payload} = action;
    switch(type) {
      case 'loaded':
        return {...prevState, isLoading: false};
      case 'loading':
        return {...prevState, isLoading: true};
      default:
        return prevState;
    }
  }, {isLoading: true});

  return <>
           {state.isLoading && <Loading />}
           {!state.isLoading && <DoSomething />}
         </>
}

Могу ли я сделать:


() => {
  const [state, dispatch] = useReducer((prevState, action) => {
    const {type, payload} = action;
    switch(type) {
      case 'loaded':
        return <DoSomething />;
      case 'loading':
        return <Loading />;
      default:
        return null;
    }
  }, {isLoading: true});

  return <>
           {state}
         </>
} 
...