美文网首页
umi监听路由参数变化

umi监听路由参数变化

作者: w晚风 | 来源:发表于2022-05-26 00:07 被阅读0次

    前言:

    下午去帮小组伙伴看问题,路由参数发生改变,但是页面无法拿到最新的参数数据,做数据动态加载。

    左侧为父级路由,右侧为子集数据,右侧可能是多个菜单指向一个页面,但参数不一样,而起初这样写,在生命周期里获取。但是这个周期函数只会触发一次

    父页面

     import React, { useState } from 'react';
    import { history } from 'umi';
    
    
    class LoyoutDemo extends React.Component {
        fns = (src:string, id:string)=>{
            history.push({
                pathname: src,
                query: {
                  id
                },
            });
        }
    
        render() {
          return (
              <div>
                <div>
                    <span onClick={ this.fns.bind(this,'/LoyoutDemo/chidDemo1', '1') } style={{ 'background':'red' }}>数据1</span>
                    <span onClick={ this.fns.bind(this,'/LoyoutDemo/chidDemo1', '2') } style={{ 'background':'blue' }}>数据2</span>
                    <span onClick={ this.fns.bind(this,'/LoyoutDemo/chidDemo2', '3') } style={{ 'background':'orange' }}>数据3</span>
                </div>
                <div>
                    { this.props.children }
                </div>
              </div>
          )
        }
    }
    
    export default LoyoutDemo;
    
    
    componentDidMount(){
      console.log(location.query)
    }
    

    所以后面,当参数发生改变的时候,是不会再触发的。

    查看umi文档后,发现有这个API,只有路由参数发生改变,就会触发,那就好办了
    https://umijs.org/zh-CN/api#history

    componentDidMount(){
        history.listen((location, action) => {
          console.log(location.query)
        })
      }
    

    相关文章

      网友评论

          本文标题:umi监听路由参数变化

          本文链接:https://www.haomeiwen.com/subject/ulzyprtx.html