加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – 如何使用React的路由器v4 history.push()[复制]

发布时间:2020-12-15 09:32:41 所属栏目:百科 来源:网络整理
导读:参见英文答案 Programmatically navigating in React-Router v4????????????????????????????????????4个 注意:我对React和Meteor相当新,所以在回答我的问题时请非常具体. 我正在尝试使用meteor创建一个短信应用程序并做出反应,但是,我使用的教程是使用Reac
参见英文答案 > Programmatically navigating in React-Router v4????????????????????????????????????4个
注意:我对React和Meteor相当新,所以在回答我的问题时请非常具体.

我正在尝试使用meteor创建一个短信应用程序并做出反应,但是,我使用的教程是使用React v3,我想知道如何在v4中执行相同的操作,即使用browserHistory.push()或browserHistory.replace ()将用户发送到另一个页面.到目前为止,我正在做一个页面,他们可以将自己的名字设置为他们想要的任何内容,然后将它们链接到聊天页面.我知道有很多关于这方面的文章和文档,但它们都是非常复杂的例子.如果可以,你能告诉我最基本的方法,我可以将某人重定向到另一个页面.

SetName.js:

import React from "react";
import { BrowserRouter } from 'react-router-dom'

export default class SetName extends React.Component{
    validateName(e){
        e.preventDefault();
        let name = this.refs.name.value;
        if(name){
            console.log(name);
        }
        this.props.history.push('/asd')
    }
    render(){
        return(
            <div>
                <form onSubmit={this.validateName.bind(this)}>
                    <h1>Enter a  Name</h1>
                    <input ref="name" type="text"/>
                    <button>Go to Chat</button>
                </form>
            </div>
        )
    }
}

main.js

import React from "react";
import ReactDOM from "react-dom";
import {Meteor} from "meteor/meteor";
import {Tracker} from "meteor/tracker";
import { BrowserRouter,Route,Switch } from 'react-router-dom'

import {Texts} from "./../imports/api/Text";
import App from "./../imports/ui/App";
import Name from "./../imports/ui/Name";
import NotFound from "./../imports/ui/NotFound";
import SetName from "./../imports/ui/SetName";

Meteor.startup(() => {
    Tracker.autorun(() => {
        let texts = Texts.find().fetch();
        const routes = (
            <BrowserRouter>
                <Switch>
                    <App path="/chat" texts={texts}/>
                    <SetName path="/setName" />
                    <Route component={NotFound}/>
                </Switch>
            </BrowserRouter>
        );
        ReactDOM.render(routes,document.getElementById("app"));
    });
});

解决方法

如果您已经在使用react router 4,那么您只需执行以下操作即可获得组件中的路由器历史记录.确保你在路由器中渲染组件,否则你必须以不同的方式进行.你可以通过打印this.props来检查
在您的组件中.如果它有历史记录,那么请执行以下操作,否则从下面执行下一个逻辑.

this.props.history.push('your routing location').

如果您的组件不在路由器内,请执行以下操作

import { withRouter } from 'react-router';

... your react component 

export default withRouter(yourcomponent);

这样它就可以将组件中的路由器历史记录作为道具注入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读