reactjs - 无法读取 react-router-dom 中未定义的属性“推送”
问题描述
我正在尝试从子组件路由并面临错误
父 App.js :-
class App extends React.Component {
render() {
return (
<div >
<Header />
<div >
<BrowserRouter>
<Switch>
<Route exact path="/" component={DashBoard} />
<Route exact path="/create-project" component={CreateProject} />
</Switch>
</BrowserRouter>
</div>
</div>
);
}
}
这是我的 Header.js :-
const Header = () => {
const history = useHistory();
const handleClick = () => history.push("/create-project");
return (
<>
<div>Projects</div>
<div>
<button onClick={handleClick}>Create +</button>
</div>
</>
);
};
尽管阅读了几个答案,但我无法调试
解决方案
您的 Header 组件位于 BrowserRouter 之外,因此像 useHistory 这样的 react-router 钩子在其中不起作用。
更好的:
class App extends React.Component {
render() {
return (
<div >
<div >
<BrowserRouter>
<Header />
<Switch>
<Route exact path="/" component={DashBoard} />
<Route exact path="/create-project" component={CreateProject} />
</Switch>
</BrowserRouter>
</div>
</div>
);
}
}
推荐阅读
- python - 在单个属性上定义外键 - Pony ORM
- java - 对本地 sqLite 进行的新数据或修订数据未出现在应用程序中
- reactjs - 如何在状态更改后调用异步函数,以便动态更改另一个状态?
- jenkins - Cake.AppCenter:找不到可执行文件
- reactjs - 在类组件中在哪里分配变量?
- java - 如何在 MainActivity 中使用子活动的数据并将其用作其他方法中的参数
- javascript - 我可以为字节标志中的特定位表示 NULL 吗?
- wxpython - 如何使用 wxpython 为文件路径创建下拉列表?
- tensorflow - 如何在 tensorflow 上对 Keras 模型的输入进行加权?
- python - Python 正则表达式匹配任何包含 n 位数字的单词,但也可以包含其他字符