Глядя на реакцию do c, есть первоначальный способ сделать это. Но, как и многие другие, это редко эффективный способ.
Итак, мне интересно, какой самый лучший / эффективный / более чистый способ объявить функцию reducer
, поскольку это чистая функция :
предположим import React, { useReducer, useCallback } from 'react'
1. Внешняя функция (стиль до c)
const reducer = (state, action) => state
const MyComp = () => {
const [state, dispatch] = useReducer(reducer, {})
}
2. useCallback
декларация
const MyComp = () => {
const reducer = useCallback((state, action) => state, [])
const [state, dispatch] = useReducer(reducer, {})
}
3. useCallback
альтернатива встроенного объявления
const MyComp = () => {
const [state, dispatch] = useReducer(useCallback((state, action) => state, []), {})
}
4. объявление встроенной функции
const MyComp = () => {
const [state, dispatch] = useReducer((state, action) => state, {})
}
Примечание: удобочитаемость, конечно, важна, но мне здесь не нужен этот аргумент:)
Все эти способы "работают" и Я не вижу чрезмерного повторного объявления функции. Но я удивляюсь, почему в документации по реакции не описан способ 2. useCallback
, который, если он окажется чище.