页面之间路由时Context.Provider重新呈现为初始状态

时间:2019-02-16 18:16:22

标签: reactjs react-hooks react-context

AppContextProvider包装所有组件(私有和非私有)。登录后,将调用分派,并且用户信息将在私有应用栏中更新和查看。但是,当导航到另一条私有路线时,应用程序栏将返回到上下文默认状态。

class App extends Component {
  render() {
    return (
      <AppContextProvider>
        <MuiThemeProvider theme={theme}>
          <CssBaseline />
          <BarSelector isTop={true} className={styles.appBar} />
          <Router />
          <BarSelector isTop={false} className={styles.appBar} />
        </MuiThemeProvider>
      </AppContextProvider>
    );
  }
}

设置上下文提供程序。在路由器中导航时会调用此方法,并且即使未调用调度,它也会重置值/状态。

import React, { createContext, useReducer } from 'react';
import UserReducer from '../reducers/user';

let initialState = {
  User: {
    FName: 'myfname',
    LName: 'mylname',
  }
}

let AppContext = createContext();

function AppContextProvider(props) {
  console.log(`AppContextProvider !!!!!`);
  let [state, dispatch] = useReducer(UserReducer, initialState);
  return (
    <AppContext.Provider value={{ state, dispatch }}>
      {props.children}
    </AppContext.Provider>
  );
}
export { AppContext, AppContextProvider };

1 个答案:

答案 0 :(得分:0)

尝试将muiThemeProvider设置为第一个提供程序。因此,AppContextProvider是主题提供程序的子级。