首页 > 其他分享 >react-router 同一路由,参数不同,页面没有刷新

react-router 同一路由,参数不同,页面没有刷新

时间:2022-12-30 18:11:34浏览次数:42  
标签:newProps react props 组件 router componentWillReceiveProps 路由

react-router 同一路由,参数不同,页面没有刷新
2020-01-11 17:53:04

使用 componentWillReceiveProps(newProps) 函数,当 props 改变时,我们就可以在该函数中通过 newProps.match.params.id 拿到新的url参数,进而进行更新。如下

componentWillReceiveProps(newProps) {
  const id = newProps.match.params.id;
  // 一些操作
}

如果使用这种方法的话,需要注意的一点是:

我们可能在react中使用的的组件不止一个,需要执行 componentWillReceiveProps 方法的组件可能是作为子组件存在的。也就是说react-router直接作用的组件是使用 componentWillReceiveProps 组件的父组件
这个时候路由参数的改变是监测不到的,为了能够监测到,需要在父组件中把 props 传给子组件,就像这样

<Route path="/hello/:id" component={MyHome} />
 
export default class MyHome extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }
 
  render() {
    return (
      // react-router当url参数改变时不能自动更新页面,为了url参数改变时能够自动更新
      // 在子组件中使用componentWillReceiveProps(),当props改变时会自动调用该函数
      // 但是现在url的参数是直接作用在page(当前页面组件)上的,为了让子组件监测到props
      // 的变化,将props全部传给子组件
       <UserInfo {...this.props} />
    );
  }
}

export default class UserInfo extends React.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
 
  componentWillReceiveProps(newProps) {
    const id = newProps.match.params.id;
    //一些操作
  }
 
  render() {
    return (
      <div className="userinfo-container">
      </div>
    );
  }
}

.

本文摘自 :https://www.cnblogs.com/

标签:newProps,react,props,组件,router,componentWillReceiveProps,路由
From: https://www.cnblogs.com/sexintercourse/p/17015535.html

相关文章

  • springcloud 学习八、Zuul 路由网关、路由的基本配置、路由访问映射规则
    前言案例的都是循序渐进的。案例的顺序:微服务讲诉->父工程maven的module建立和rest风格的请求->eureka的学习、三大组件,服务注册与消费->eureka的集群操作->ribbon的负载均......
  • Redux+React-Redux 最新入门实战指南?
    大家好,我是CoderBin前言本文将给大家带来redux和react-redux的快速使用,以理论+代码+案例的形式教大家如何在react中去使用状态管理,以实现数据的高效通信......
  • vue3的shallowRef()和shallowReactive()
    1.shallowReactive():使用shallowReactive转化的对象只有对象的第一层级有响应式。   2.shallowRef():使用shallowRef转化的基本数据类型和使用ref没有差别,使用shallo......
  • Vue3:路由跳转产生默认a标签问题
    解决方案:在对应的标签下,添加a标签的默认设置例:   ......
  • Vue2下的多级路由
    多级路由(多级路由)配置路由规则,使用children配置项: routes:[{path:'/about',component:About,},{path:'/home',......
  • React
    1.概述2.安装配置操作系统:MACOS开发工具:VSCODE2.1安装工具node官网下载安装:https://nodejs.org/en/安完后,就可以使用npm命令了cnpmnpm命令下载的包,都是......
  • 路由协议ISIS第3篇---报文结构
    ISIS报文结构因为IS-IS协议是基于链路层的,所以IS-IS报文直接封装在链路层报文中。所有的IS-IS报文由三部分组成:IS-IS通用头,PDU固定专用头和PDUTLV,其中IS-IS通用头是8个......
  • 电犀牛R66s软路由体验
    产品简介[https://r68s.cn]登录后台192.168.100.1账户名:root密码:password修改用户名和密码系统->管理权密码qs**********保存&应用优化网络网络->TurboAC......
  • 10 | React 15中的“栈调和”和diff
    调和(Reconciliation)过程与Diff算法VirtualDOM是一种编程概念。在这个概念里,UI以一种理想化的,或者说“虚拟的”表现形式被保存于内存中,并通过如ReactDOM等类库使之......
  • 终极.NET混淆器丨.NET Reactor产品介绍
    无与伦比的.NET代码保护系统,可完全阻止任何人反编译您的代码。  产品优势01、混淆技术.NETReactor通过向.NET程序集添加不同的保护......