useReducer
возвращает массив, первое значение которого является состоянием, а второе значение является отправкой. Вы деструктурируете эти значения.
const someArray = () => ['value1','value2']
const [value1 , value2] = someArray()
console.log(value1)
console.log(value2)
Насколько порядок таков:
useState
возвращает массив как [state, setState]
useReducer
возвращает массив как [state , dispatch]
Как вы можете видеть, оба очень похожи
Более того: aОбщей темой при вызове функции является передача в качестве первого аргумента основного аргумента (reducer), а затем его параметров (initialState). useReducer(reducer, initialState)
Обновлено Изменить расширенный ответ:
Это потому, что вы всегда будете передавать основной аргумент и не сможете передавать его параметры
Если useReducerпотребовав, чтобы вы вызывали его с useReducer(initialValues, reducer)
, вы не сможете вызвать его без значений initalValues, таких как useReducer(reducer)
, поскольку useReducer будет считать, что редуктор - это ваши initalValues, и что редуктор не был передан.
ReactВместо этого команда могла бы принять объект, такой как {initalValues, reducer}
, и порядок не имел бы значения, но это не так