@justifycontent

Почему dispatch надо использовать 2 раза?

Компонента App.js
const App = () => {
  const dispatch = useDispatch();

  React.useEffect(() => {
// Вот тут я диспатчу fetchPizzas, но зачем? Если fetchPizzas это делает внутри себя.
    dispatch(fetchPizzas())
  }, [])


  return (
    <div className="wrapper">
      <Header />  {/*--------H E A D E R-------*/}
      <div className="content">
        <Route exact path='/' component={Home} /> {/*--------H O M E-------*/}
        <Route exact path='/cart' component={Cart} /> {/*--------C A R T-------*/}
      </div>
    </div>
  )
}

export default App;


actions:
import axios from 'axios'

const fetchPizzas = () => (dispatch) => {
  axios.get('http://localhost:3003/pizzas').then(({ data }) => {
    dispatch(setPizzas(data))
  })
}

const setPizzas = items => ({
  type: 'SET_PIZZAS',
  payload: items,
});

export default fetchPizzas

Почему недостаточно просто вызвать fetchPizzas()? Выполняю этот запрос с использованием redux-thunk
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
У вас два action:
  1. Запусти запрос
  2. Сохрани результат

Поэтому и dispatch два.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@xirurgx3d
redux-thunk - это мидлвара, которая подразумевает собой промежуточный слой между вашим action и reduser,
в которой вы можете на одну реакцию экшина, повесить сколько угодно диспачеров
fetchPizzas - является функцией частичного применения, куда вы можете передать нужны вам параметры, а redux-thunk, уже во вложенную функцию передает вам dispatch, что бы вы могли в ну три своей функции, могли вызывать другие экшины через dispatch
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы