微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过单击reactjs中的标题内容来控制正文内容?

如何解决如何通过单击reactjs中的标题内容来控制正文内容?

我正尝试使用React Router进行重定向,如下所示:

import { useHistory } from "react-router-dom";




function HeaderElements(props)
{
    let history = useHistory();

    function handleClick(link) {
        history.push(link);
    }
    return(
        <div className = "HeaderOptions" onClick = {(e) => {
            e.preventDefault();
            alert(props.headerhrefs);
            handleClick(props.headerhrefs);
        }}>
        {props.title}
        </div>
    );
}

但是当我单击如下所示的链接时:

enter image description here

警报告诉我有props.headerrefs

,然后不进行重定向,而是引发以下错误TypeError: Cannot read property 'push' of undefined

enter image description here

这是我的app.js:

import React from 'react';
import './App.css';


import Header from './components/Header/Header';
import GlobalSiteConstants from './components/ConstantFiles/GlobalSiteConstants';
import HomePage from './components/HomePage';
import LoginPage from './components/LoginPage';
import {browserRouter,Route} from 'react-router-dom';

function App() {
  return (
    <div>
    <Header HeaderNames = {GlobalSiteConstants.HeaderNames}
    HeaderHrefs = {GlobalSiteConstants.HeaderHrefs}/>
    <browserRouter>
    <Route exact path = "/"><HomePage / ></Route>
    <Route exact path = "/login"><LoginPage / ></Route>
    </browserRouter>
    </div>
  );
}

export default App;

如您所见,我的标头不在路由器内,我认为这是引起问题的原因。谁能帮我这个忙吗?我想根据用户的点击在“标题路由”下方进行更改。

例如,我的网络结构如下:

--------- Header -----------------

--------内容----------------

所有页面共有标题的地方,内容更改如下: “ /” =>主页 “ / login” =>登录页面

以此类推...

我想根据用户的点击更改Content部分。我知道可以通过条件渲染来实现,但是我们不能在这里使用Router吗?只是好奇。

解决方法

通过将Header放入BrowseRouter中的app.js中解决了该问题。

import React from 'react';
import './App.css';


import Header from './components/Header/Header';
import GlobalSiteConstants from './components/ConstantFiles/GlobalSiteConstants';
import HomePage from './components/HomePage';
import LoginPage from './components/LoginPage';
import {BrowserRouter,Route} from 'react-router-dom';

function App() {
  return (
    <div>
    
    <BrowserRouter>
    <Header HeaderNames = {GlobalSiteConstants.HeaderNames}
    HeaderHrefs = {GlobalSiteConstants.HeaderHrefs}/>
    <Route exact path = "/"><HomePage / ></Route>
    <Route exact path = "/login"><LoginPage / ></Route>
    </BrowserRouter>
    </div>
  );
}

export default App;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。