javascript - Reactjs 钩子无法读取未定义错误的属性“推送”
问题描述
我是新手,正在用 react js 开发简单的仪表板。
我的 App.js 文件是
<BrowserRouter>
<div>
<div>
<Switch>
<Route exact path="/" component={Login} />
<PublicRoute path="/login" component={Login} />
<PrivateRoute path="/dashboard" component={Home} />
<PrivateRoute path="/home2" component={Home2} />
</Switch>
</div>
</div>
</BrowserRouter>
Home 组件中有 map 函数,它调用另一个名为 Deposits.js 的组件来映射卡片组件上的数组元素。
Home.js 文件代码部分是:
<Grid container spacing={3}>
{menuData.map((x) => (
<Grid item xs={12} md={4} lg={3}>
<Paper>
<Deposits site_informations={x} channelName_coverted
{(x.ChannelName).replace("_"," ")} />
</Paper>
</Grid>
在 Deposits.js 中有一个按钮,我想用这个按钮实际点击另一个页面。
<IconButton onClick={() => props.history.push({ pathname: "/home2", state: { number: site_info.channel } })} >
<TrendingUp />
</IconButton>
但是当onClick时,无法读取未定义错误的属性'push'。我应该怎么办 ?
解决方案
问题
该Deposits
组件没有收到history
进行推送的道具。
解决方案
假设您的PrivateRoute
组件将路由道具传递给渲染的组件,那么您可以传递history
fromHome
到Deposits
<Deposits
history={props.history}
...other props
/>
或者你可以只使用组件内部的useHistory
react 钩子。react-router-dom
Deposits
const history = useHistory();
...
<IconButton
onClick={() => history.push({
pathname: "/home2",
state: { number: site_info.channel }
})}
>
<TrendingUp />
</IconButton>
推荐阅读
- angularjs - 如何向 Umbraco 的自定义后台部分添加验证?
- python - 我有一个用 Julia 编写的高性能函数,如何从 Python 中使用它?
- python - 如何在 Python 3.6 Windows 7 中安装 psycopg2
- react-native - Material Top Tab Navigator React Native 中的 AsyncStorage 访问
- javascript - 多级转发 refs [Typescript / React]
- javascript - Jenkins - 将 Yaml 文件从管道错误部署到 Kubernetes
- c++ - 将 mmap 与 C++ 和动态容器一起使用
- scala - scala中方法中的奇怪抽象类型构造
- c++ - OpenMP 关键部分内的数据竞争
- c++ - __int32 vs int vs int32_t 之间的区别(再次)