React-router-V4之事件触发页面跳转

(跟风吐槽下react-router,V3到V4,网上很多教程现在大多还是V3的,如果照搬代码,分分钟入坑,对于新手学习还是存在一定阻碍的;But,对于真正的前端高手来说应该不是问题。终极结论:新技术,还得看官网文档)

一、入坑代码

class UserAdd extends React.Component {
  handleSubmit (e) {
    ...

    fetch('http://localhost:3000/user', { ... })
      .then((res) => res.json())
      .then((res) => {
        if (res.id) {
          alert('添加用户成功');
        (1)this.context.router.push('/user/list');
        ---------------------------------------
          return;
        } else {
          alert('添加失败');
        }
      })
      .catch((err) => console.error(err));
  }
  render () { ... }
}

// 必须给UserAdd定义一个包含router属性的contextTypes
// 使得组件中可以通过this.context.router来使用React Router提供的方

(2) UserAdd.contextTypes = {
  router: React.PropTypes.object.isRequired
};

这个组件要实现的功能是,如果成功添加用户,则跳转到用户列表页,而实现这个功能的代码为(1)(2),但是这个实现方式是V3版本的,所以会报错”TypeError: Cannot read property ‘object’ of undefined”

在V4中要实现这个功能,需要如下修改:
1、引入proptypes模块:import PropTypes from “proptypes”
2、修改(1)处代码:this.context.router.history.push(‘/user/list’)
3、修改(2)处代码:
UserAdd.contextTypes = {
router: PropTypes.object.isRequired
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

继学先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值