我正在尝试将具有钩子的类组件React应用程序迁移到功能组件。
使用类组件时,由于我使用的是Link库,因此我经常将Button组件传递给react-router-dom组件。
但是现在我尝试使用Paratron/hookrouter库进行路由,但是在将A
组件传递给Button时遇到错误:
TypeError: props.href未定义
我的代码现在看起来像这样:
import React, { Fragment } from 'react';
import { Grid, Button } from '@material-ui/core';
import { A } from 'hookrouter';
import './styles.css';
const Home = props => {
return (
<Fragment>
<Grid container spacing={24} className="landing">
<Grid item xs={6}>
<Button
variant="contained"
color="primary"
size="large"
component={A}
to="/login"
>Login</Button>
</Grid>
<Grid item xs={6}>
<Button
variant="contained"
color="secondary"
size="large"
component={A}
to="/contact"
>Contact us</Button>
</Grid>
</Grid>
</Fragment>
);
}
export default Home;
我猜这个A
组件不包含href
属性。不知道如何进行。任何意见将不胜感激。
答案 0 :(得分:3)
您需要提供“ href ”道具,而不是“ to ”道具。
<Fragment>
<Grid container spacing={24} className="landing">
<Grid item xs={6}>
<Button
variant="contained"
color="primary"
size="large"
component={A}
href="/login" //href
>Login</Button>
</Grid>
<Grid item xs={6}>
<Button
variant="contained"
color="secondary"
size="large"
component={A}
href="/contact" //href
>Contact us</Button>
</Grid>
</Grid>
</Fragment>
我还必须用类组件包装A,因为A可能是函数组件,并且它们不能容纳ref(这是按钮组件prop所必需的)
您可以参考此有效的CodeSandbox演示