模拟vue的tag属性,在react里实现自定义Link

我封装了一个简单的实现react里自定义Link的方法,方便大家使用。

因为普通组件没有metch、location、history等属性。只有在<Router>里面的<component>渲染的组件才有那三个属性。所以我定义了一个组件,写<Route>来是实现 自定义Link。class CustomNavLink extends Component{
     render(){
       return(
          <Route
            children={({match,location,history})=>{
                return(
                    <li onClink={this.goto.bind(this,history,props.to)}>        //通过点击事件来进行跳转。我这里是<li>标签,你可以换成你需要的。
                        {
                                location.pathname===thiss.props.to?">"+this.props.children:this.props.children    //这里写标签里的内容,我这里是实现的是一个点击标签,给当前标签添加一个“>”来标识。
                           }
                    </li>

              )

          }}
        >
   )
    }
   goto(history,to){                //模拟vue里的tag的点击事件
      history.push(to)
   }
}

这里是我引用上面组件的一个例子,大家可以参考一下。

class Home extends Component {
  render () {
    return (
      <div>
         <ul>
            <CustomNavLink to="/food">food</CustomNavLink>
            <CustomNavLink to="/wiki">wiki</CustomNavLink>
            <CustomNavLink to="/profile">profile</CustomNavLink>
        </ul>
        <Switch>
         <Redirect from="/" exact to="/food" />
         <Route path="/food" component={Food} />
         <Route path="/wiki" component={Wiki} />
         <Route path="/profile" component={Profile} />
         <Route component={Page404}/>
        </Switch>
     </div>
    )
  }
}

原文地址:https://www.cnblogs.com/kaiqinzhang/p/9977992.html

时间: 2024-08-08 01:18:28

模拟vue的tag属性,在react里实现自定义Link的相关文章

模拟Vue之数据驱动3

一.前言 在"模拟Vue之数据驱动2"中,我们实现了个Observer构造函数,通过它可以达到监听已有数据data中的所有属性. 但,倘若我们想在某个对象中,新增某个属性呢? 如下: 那么岂不是,新增的infor属性,以及它的对象属性,没有得到监听. 此时,应该怎么处理呢? 通过走读Vue源码,发现他是采用另增属性方法$set实现的. 就是说,如果我们采用常规方法为对象增加属性(如上),我们没法得知并监控它,所以,我们为每个对象扩展一个$set方法,用于另增属性使用,即可,如下: da

模拟Vue之数据驱动4

一.前言 在"模拟Vue之数据驱动3"中,我们实现了为每个对象扩展一个$set方法,用于新增属性使用,这样就可以监听新增的属性了. 当然,数组也是对象,也可以通过$set方法实现新增属性. 但是,对于数组而言,通常我们是通过push之类的方法吧. PS:Vue中明确指出push.pop.shift.unshift.splice.sort.reverse方法为变异方法,可以通过它们监听属性变化,触发视图更新(详情见here) 下面,我们就一起来实现这些Array的变异方法吧. 注:我们将

第五章 动画 50 动画-transition-group中appear和tag属性的作用

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compati

关于vue的计算属性以及双向绑定的原理理解(vue2.x)以及vue3.0

vue的计算属性: 1.什么是计算属性? 计算属性的目的是用于对数据进行简单运算的,若在模板中放过多的计算逻辑会导致模板难以维护. 计算属性是基于它们的依赖进行缓存的.计算属性只有在它的相关依赖发生改变时才会重新求值. 2.计算属性如何使用? 1.在一个计算属性里可以完成各种复杂的逻辑,包括运算.函数调用等,只要最终返回一个结果就可以. computed: { reverseText: function(){ return app1.text.split('').reverse().join('

UI控件tag属性和魔法数字的处理

说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值 来判断执行哪个按钮的监听事件: - (IBAction)up:(UIButton *)sender // 该方法有四个btn指向,tag值是下边的,即可根据不同tag值执行相应的代码 { //upMoveTag的tag是10 //bottomMoveTag:11 //leftMoveTag:12 //rightMoveTag:13 CGRect re

vue的计算属性

在模板中写入过多的逻辑使模板过重且难以维护.因此有了计算属性(computed)的产生. 你可以像绑定普通属性一样在模板中绑定计算属性,vue知道计算属性中的函数依赖data中的数据.所以当data中的数据发生变化时.所有依赖计算属性中的函数也会更新.而且最妙的是,我们已经以声明的方式创建了这种依赖关系:计算属性的getter是没有副作用的,这使得它易于推理和测试. 1,计算属性与methods 我们将同一函数定义为method,而不是一个计算属性,得到的结果都是一样的.然而两者的不同:计算属性

Vue.js 计算属性

Vue.js 计算属性 使用计算属性的实例: <!DOCTYPE html> <html> <head> <meta cahrset="utf-8"> <title>computed</title> <script src="vue.min.js"></script> </head> <body> <div id="app"

Vue(十二)vue实例的属性和方法

vue实例的属性和方法 1. 属性 vm.$el vm.$data vm.$options vm.$refs 2. 方法 vm.$mount() vm.$destroy() vm.$nextTick(callback) vm.$set(object,key,value) vm.$delete(object,key) vm.$watch(data,callback[,options]) 原文地址:https://www.cnblogs.com/yulingjia/p/8288273.html

vue中计算属性,方法,侦听器

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue中计算属性,方法,侦听器</title> <script src="./vue.js"></script> </head> <body> <div id="app&qu