【发布时间】:2021-12-09 18:18:52
【问题描述】:
我有一个应用代码
import React from "react";
import { Route, Switch } from "react-router-dom";
import Minidrawer from './components/Drawer/Minidrawer'
import { makeStyles } from '@mui/styles';
import Box from '@mui/material/Box';
import Main from "./components/Main/Main";
import {useSelector} from 'react-redux'
const useStyles = makeStyles({
container: {
display: "flex"
}
});
export default function App() {
const classes = useStyles();
const user = useSelector((state) => state.auth);
return (
<Box sx={{ display: 'flex' }}>
<Minidrawer currUser={user}/>
<Switch>
<Route exact from="/" render={props => <Main childText="home" currUser={user} {...props} />} />
<Route exact path="/auth" render={props => <Main childText="auth" currUser={user} {...props} />} />
<Route exact path="/register-client" render={props => <Main childText="registerClient" currUser={user} {...props} />} />
</Switch>
</Box>
);
}
我必须将 currUser 传递给 App 中导入的所有子组件,但我不想复制代码,有什么不同的方法可以实现这一点,以便所有组件都可以访问 currUser?
【问题讨论】:
-
redux 或您在组件本身中调用的上下文变量
-
组件可以随时调用的上下文变量
-
你在每条路由中渲染同一个主组件,那你为什么不在主组件中调用
useSelector而不是App呢?或者,映射路线请参阅:How Mapping Routes in React Router with Protected Function?
标签: javascript reactjs redux