#麻辣小龙虾# 2019-01-18 11:03 采纳率: 100%
浏览 2799

react-router如何像vue-router通过this.$router.push的方式编程实现路由跳转

最近在研究react,遇到一个编程路由跳转问题,其实我就是想实现,如果像vue-router的方式通过this.$router.push({name: '', ''});类似的方式实现跳转到不同的组件,网上找了好多方法,都不行,不知道错在哪里,求大神指点一下。

我的版本:
图片说明
图片说明

import React, { Component } from 'react';
// import logo from './logo.svg';
import './App.css';
import './style/common/base.css';
import './style/common/reset.css';
import Index from './pages/index/index.jsx';
import List from './pages/list/List.jsx';
import Detail from './pages/detail/Detail.jsx';
import Form from './pages/form/form.jsx';
import { Route, HashRouter, Switch, withRouter } from 'react-router-dom';
class App extends Component {
  constructor (props) {
    super(props);
    this.state = {
      msg: {
        name: 'zhangan',
        age: '212',
        arr: [1, 2, 3, '21'],
        obj: {
          hight: '160cm',
          width: '89kg'
        }
      }
    }
    // this.routerUrl = this.routerUrl.bind(this);
  }
  childFun (state, val) {
    console.log('子组件往父组件传递的值!');
    console.log(state);
    console.log(val);
  }
  // 路由跳转,编程导航
  routerUrl (url, params) {
    this.props.history.push({
      pathname:"/index",
      query:{
        name:"inbox",
        myas:"哈哈"
      }
    });
  }
  render() {
    return (
      <div className="App">
        <div className="router">
          <button onClick={this.routerUrl.bind(this)}>index</button>
          <button onClick={this.routerUrl.bind(this)}>detail</button>
          <button onClick={this.routerUrl.bind(this)}>list</button>
          <button onClick={this.routerUrl.bind(this)}>form</button>
        </div>
        <div className="content">
        <HashRouter>
          <Switch>
              <Route exact path="/" component={Index}/>
              <Route exact path="/list" component={List}/>
              <Route exact path="/detail" component={Detail}/>
              <Route exact path="/form" component={Form}/>
          </Switch>
        </HashRouter>

          {/* <Index />
          <Detail />
          <List />
          <Form msg={this.state.msg} clickFun={this.childFun.bind(this)}/> */}
        </div>
      </div>
    );
  }
  componentWillMount () {
    console.log(this);
  }
}
export default App;

  • 写回答

1条回答 默认 最新

  • f4268286 2019-01-27 09:33
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。