美文网首页
Vue 通信传参

Vue 通信传参

作者: 潇潇翔子 | 来源:发表于2018-08-26 12:52 被阅读23次

1.通过路由带参数传参

在两个组件A和B之间,A通过query把name传递给B,可以通过点击事件、钩子函数等触发。
this.$route.push({ path: '/componentsB' , query: { name: 123 } } )
在B中获取从A中传递过来的参数
this.$route.query.name

2.父子组组件传参

1.父组件向子组件传值props

1.定义父组件,父组件传递 number这个数值给子组件,如果传递的参数很多,推荐使用json数组{}的形式
<template>
  <div class="parent">
    <children number=666></children>
  </div>
</template>

<script>
import Children from  'components/children'
export default {
  component:  Children
}
</script>

2.定义子组件,子组件通过props方法获取父子件传递过来的值。props中可以定义能接收的数据类型,如果不符合会报错。
<template>
  <div class="children">
    {{  number  }}
  </div>
</template>

<script>
export default {
  props: {
    'number': [Number,String,Object],
    'string': [String]
  }
}
</script>
3.假如接收的参数 是动态的,比如 input输入的内容 v-model的形式。

注意:传递的参数名称不识别驼峰命名,推荐使用横杠-命名。

<template>
  <div class="parent">
    <input type="text" v-model="indexText">
    <children :input-val = 'indexText'></children>
  </div>
</template>

<script>
import Children from  'components/children'
export default {
  component:  {
    Children
  }
}
</script>
<template>
  <div class="children">
    {{  number  }}
  </div>
</template>
<script>
export default {
  props: {
    'input-val':  [String]
  }
}
</script>
4.父子组件传值,数据是异步请求,有可能数据渲染时报错

原因:异步请求时,数据还没有获取到但是此时已经渲染节点了
解决方案:可以在 父组件需要传递数据的节点加上 v-if = false,异步请求获取数据后,v-if = true

2.子组件往父组件传值,通过emit事件

<template>
  <div class="children">
    <button @click="emitToParent">按钮点击传值给父组件</button>
  </div>
</template>

<script>
export default {
  methods: {
    emitToParent() {
      this.$emit('child-event','childToParent')
    }
  }
}
</script>
<template>
  <div class="parent">
    <children @child-event="parebtEvent"></children>
  </div>
</template>

<script>
import Children from  'components/children'
export default {
  component:  {
    Children
  },
  methods: {
    parebtEvent(data) {
      console.log(data);
    }
  }
}
</script>

引用:https://blog.csdn.net/qq_35430000/article/details/79291287

相关文章

  • Vue 通信传参

    1.通过路由带参数传参 在两个组件A和B之间,A通过query把name传递给B,可以通过点击事件、钩子函数等触发...

  • 31.vue传参

    1.vue传参 vue传参使用路由传参params,query,或者使用vuex,localStorage,vue...

  • Vue组件通信

    Vue 组件之间的通信,通常我们遇到的都是父子组件之间的通信 一、父子组件传参 子组件定义 Props 属性; 父...

  • vue第七节

    Vue里组件的通信 通信:传参、控制(A操控B做一个事件)、数据共享 模式:父子组件间、非父子组件 父组件可以将一...

  • vue-router

    1. vue-router query 和 params 传参 params 传参: 总结: 用params传参只...

  • vue - 路由带参跳转

    vue路由传参按照传参方式可划分为params传参和query传参; params传参分为在url中显示和影藏参数...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • vue-router总结

    1、通过 :to 传参 2、通过URL传参 router/index.js App.vue Hi.vue 重定向 ...

  • vue 页面传参,不通过路由传参

    1,vue 传参,不通过路由传参 1,项目文件结构 2,list.vue 文件 3,... tab1.vue 文件

  • 路由传参 query 和 params

    vue路由传参分为两种情况: 一、query和params传参的区别: 1、query传参显示参数,params传...

网友评论

      本文标题:Vue 通信传参

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