路由与组件通讯

路由的钩子:(即导航守卫)

1.全局的,

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
  // ...
})

2.单个路由独享的

const router = new VueRouter({
  routes: [
    {
      path: ‘/foo‘,
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

3.组件级的。

beforeRouteEnter
beforeRouteUpdate (2.2 新增)
beforeRouteLeave

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}

路由元信息:给路由表每项添加的meta

例如:

    {
        name:‘find‘,
        path:‘/find‘,
        component:find,
        meta:{
          title:‘我是发现组件‘,
        },

===========================5.16组件通讯==========================================

组件通讯

一、组件:组件是可复用的 Vue 实例

二、创建组件:

    1.全局组件
    Vue.component(‘my-component-name‘, {
      // ... 选项 ...
    })

例如:

    import Vue from ‘vue‘;

    //定义一个全局组件
    Vue.component(‘myCom1‘,{
        template:"<div>我是组件{{ count }} <button @click=‘go‘>click</button></div>",
        data() {
            return {
                count:100
            }
        },
        methods:{
            go() {
                console.log(‘我是组件1的go方法‘);
            }
        }
    });

    2.局部组件
        var ComponentA = { /* ... */ }

        然后在 components 选项中定义你想要使用的组件:

        new Vue({
          el: ‘#app‘
          components: {
            ‘component-a‘: ComponentA,
          }

三、组件通讯

   父传子:
        1.创建两个组件A.vue和B.vue,并在A.vue中引入B.vue,并注册
        2.在A.vue引入的子组件自身添加要传递的属性

          例如: <my-com1 :yonghu="user"  :dizhi="address" :age="age"></my-com1>

        3.在B组件中接收A.vue组件中传递过来的值,通过props接收

           具体props有两种写法:数组和对象(带验证)
            例如:
              export default {
              //  props:[‘yonghu‘,‘dizhi‘,‘age‘],
                props:{
                    ‘yonghu‘:{
                        type:[String]
                    },
                    ‘dizhi‘:{
                        type:String
                    },
                    ‘age‘:{
                        type:Number,
                        default:0
                    }

                },

   子传父:主要通过事件派发实现,具体通过$emit实现

        派发事件:$emit()
        接收事件:@事件名戒v-on

兄弟之间:(即非父子)

        1. Event Bus:通过一个空的vue(即桥梁)实现兄弟之间数据传递

         第一步:创建两个兄弟组件并引入到其他组件中  例如:son1,son2
         第二步:创建一个空的vue  例如:bus.js
         第三步:分别在两个兄弟组件中引入bus.js
         第四步:例如:son1数据发送给son2,在son1通过触发一个事件响应来派发

                import Bus from ‘@/components/common/bus‘;
                <button @click="goToSon2">向son2发送数据</button>

                    methods:{
                        goToSon2() {
                         // 派发事件
                          Bus.$emit(‘ok‘,this.msg)

                   }
        第五步:在生命周期钩子上监听son1派发过来的事件   $on

                 created(){
                        //监听事件
                       Bus.$on(‘ok‘,(v)=>{
                           // console.log(v);
                           this.name=v;
                       })
                    }

原文地址:https://www.cnblogs.com/zbcry/p/9052923.html

时间: 2024-08-30 11:40:59

路由与组件通讯的相关文章

openstack组件通讯端口定义

openstack 组件通讯是通过ZeroMQ+ceilometer发送组件调用信息,具体是通过TCP通讯,发送数据和接收数据是用同一个端口(在配置文件指定),下面通过代码稍作解析: IceHouse/ceilometer/ceilometer/openstack/common/rpc/impl_zmq.py def _multi_send(method, context, topic, msg, timeout=None, envelope=False, _msg_id=None): "&qu

vue2.0中eventBus实现兄弟组件通讯

我们知道,在vue中父子组件的通讯是通过props和自定义事件搞定的,简单那的非父子组件通讯用bus(一个空的Vue实例),针对中大型的项目会选择vuex,然而小项目的话,便捷的解决方案就是eventBus. 官网相关描述在:$dispatch和$broadcast替换  一节中.提到: $dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题.对于$dispatch 和 $broadcast最简单的升级方式就是:通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层

Vue组件通讯

Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通讯,是通过props进行数据传递,并且具有这几个特性,单向传递,子组件接收的数据不可以更改,如果更改,会发出警告,每次父组件更新时,子组件的所有 prop 都会更新为最新值. 1 父组件 2 <template lang="pug"> 3 .father 4 Children(:name='msg

Vue最常用的组件通讯有三种:父-&gt;子组件通讯、子-&gt;父组件通讯,兄弟组件通讯.(template用的pug模板语法)

Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通讯,是通过props进行数据传递,并且具有这几个特性,单向传递,子组件接收的数据不可以更改,如果更改,会发出警告,每次父组件更新时,子组件的所有 prop 都会更新为最新值. 1 父组件 2 <template lang="pug"> 3 .father 4 Children(:name='msg

小程序的组件通讯三种方法==子向父传值

小程序的组件通讯三种方法 ============================ ================================ 子向父传值 第一步:小程序子向父传值在父组件定义方法 第二步:小程序子向父传值第二部在使用子组件的标签上在父的wxml文件中把方法传递给子组件 第三步:小程序子向父传值第三步在子组件的js文件中调用this·triggerEvent触发方法同时传递参数给父组件 第四步:第四步在第一步定义好的方法内部通过e·detail来接收子组件传递回来的参数 原

Vue--watch控制监听路由地址-组件的变化----&#39;$route.path&#39;: function (newVal, oldVal)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

使用 Angular RouteReuseStrategy 缓存(路由)组件

使用 Angular RouteReuseStrategy 缓存组件 Cache components with Angular RouteReuseStrategy RouteReuseStrategy provider 允许我们控制 Angular 路由和组件生命周期的行为. 当我们在组件间切换的时候,Angular都会销毁上一个组件,并且创建一个新的组件.在大多数情况下,我们可能不想让它这样工作,因为每次加载一个组件,可能会有很多类似HTTP请求一样的昂贵的操作. 这时候就需要RouteR

十八、React react-router4.x中:实现路由模块化、以及嵌套路由父子组件传值

一.路由模块化(用字典定义路由,然后循环出来) 1.官方文档参考 [官方文档]https://reacttraining.com/react-router/web/guides/quick-start [路由模块化实例]https://reacttraining.com/react-router/web/example/route-config 2.路由模块化:实现代码 其它代码参考:十七:https://blog.csdn.net/u010132177/article/details/1033

vue的组件通讯 父传子 -- 子传父-- 兄弟组件的传值 vue的组件传值

首先文字简单撸一下 父子传子   -------首先在父组件上绑定一个属性,在子组件里用props接收,可以是数组或者是对象 子传父   ------在父组件升上自定义一个方法,在子组件里通过this.$emit("父组件上的方法名",a)     /-------a------/代表需要传递的参数        兄弟组件通讯   需要创建一个公共的vue 实例, new vue()    在main.js里 书写Vue.prototype .com=new vue()    通过pr