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

前端之家收集整理的这篇文章主要介绍了React-router-V4之事件触发页面跳转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

一、入坑代码

  1. class UserAdd extends React.Component {
  2. handleSubmit (e) {
  3. ...
  4.  
  5. fetch('http://localhost:3000/user',{ ... })
  6. .then((res) => res.json())
  7. .then((res) => {
  8. if (res.id) {
  9. alert('添加用户成功');
  10. (1)this.context.router.push('/user/list');
  11. ---------------------------------------
  12. return;
  13. } else {
  14. alert('添加失败');
  15. }
  16. })
  17. .catch((err) => console.error(err));
  18. }
  19. render () { ... }
  20. }
  21.  
  22. // 必须给UserAdd定义一个包含router属性的contextTypes
  23. // 使得组件中可以通过this.context.router来使用React Router提供的方
  24.  
  25. (2) UserAdd.contextTypes = {
  26. router: React.PropTypes.object.isrequired
  27. };

这个组件要实现的功能是,如果成功添加用户,则跳转用户列表页,而实现这个功能代码为(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 }

猜你在找的React相关文章