Сводка
Я использую контекстные API React и ловушки для создания глобального 'StateProvider', однако, когда я меняю страницы, мой провайдер повторно отображает, что приводит к потере активного состояния и возвращению к значению по умолчанию.
Насколько я понимаю, использование метода wrapRootElement должно означать, что мой stateProvider должен сохраняться.
Буду очень признателен за советы по устранению этой проблемы!
Соответствующая информация
gatsby-browser. js
const StateProvider = require("./src/components/store/store").StateProvider
exports.wrapRootElement = ({ element }) => {
return <StateProvider>{element}</StateProvider>
}
магазин. js
const StateProviderContext = createContext()
const DispatchProviderContext = createContext()
const StateProvider = ({ children }) => {
console.log("init")
const tocTree = useEntries()
const initialState = reducer(
{},
{
type: INIT_PAGE,
value: { pathname, tocTree },
}
)
const [state, dispatch] = useReducer(reducer, initialState)
return (
<StateProviderContext.Provider value={state}>
<DispatchProviderContext.Provider value={dispatch}>
{children}
</DispatchProviderContext.Provider>
</StateProviderContext.Provider>
)
}