Я использую Context API для хранения глобального значения, такого как userId, для обмена между компонентами всего приложения.
Вот как выглядит контекст. js выглядит так:
import React, { useState } from 'react';
const AppContext = React.createContext({
date: new Date(),
userId: null,
groupId: null,
setAppContext: () => {},
});
export const AppContextProvider = (props) => {
const initState = {
date: new Date(),
userId: null,
groupId: null,
setAppContext: (appContext) => {
console.log(state); // this line always log initial state value after first update
setState({ ...state, ...appContext });
},
}
const [state, setState] = useState(initState);
return (
<AppContext.Provider value={state}>
{props.children}
</AppContext.Provider>
)
}
export default AppContext;
В основном Я пытаюсь использовать один большой контекст для хранения всех значений, которые я использую вместе, и доступа к ним в дочерних компонентах следующим образом:
// access value and the setter
const { userId, setAppContext } = useContext(AppContext);
// setting value
setAppContext({
userId: newUserId,
});
Проблема в том, что переменная "state" в функции установки не кажется, обновляется, и когда я пытаюсь установить новое значение, как указано выше, другие значения перезаписываются его начальным значением (например, userId получает обновление, но остальные возвращаются к нулю), что, я думаю, я должен сделать что-то не так, и я все еще понятия не имею.
Мы будем благодарны за любой совет.