Vue组件间传值的方式

  • 父传子:在父组件中给子组件标签上绑定一个属性, 属性上挂载需要传递的值,在子组件通过 props:['自定义属性名'] 来接收数据。
<template>
  <!-- 父组件 -->
  <div>
    <Child :message="son1" v-if="typeCode == '0'"></Child>
  </div>
</template>

<script>
// 引入子组件
import Child from "./subassembly/son.vue";
export default {
  data() {
    return {
     // typeCode: "0",//通过"0" "1"判断显示哪个页面;0:子组件1页面;1:子组件2页面
      typeCode: "0",
      son1:"儿子"
    
    };
  },
  //一定要注册组件
  components: {   
    Child
  },
};
</script>

 son.vue

<template>
  <!-- 子组件1 -->
  <h2>我是子组件1<br />接收父组件值:{{ message }}</h2>
</template>

<script>
export default {
  data() {
    return {};
  },
  props: {
    // message用于接收
    message: {
      type: String, //验证类型,也可以验证其他类型
      default: "", //如果父组件传值,则用父组件的值渲染,反之使用默认值
    },
  },
  mounted() {
    console.log(this.message); //父组件传递过来的数据
  },
};
</script>

  • 子传父:在子组件中自定义一个事件,调用这个事件后,子组件通过 this.$emit('自定义事件名',要传递的数据) 发送父组件可以监听的数据,最后父组件监听子组件事件,调用事件并接收传递过来的数据。
<template>
  <!-- 子组件1 -->
  <button @click="seedOnclick">我是子组件1</button>
</template>

<script>
export default {
  data() {
    return {
      son1: "我是儿子", //子传父要传递的值
    };
  },
  methods: {
    seedOnclick() {
      this.$emit("son", this.son1); //参数1:自定义事件;参数2:要传递的值
    },
  },
};
</script>
<template>
  <!-- 父组件 -->
  <div>
    <Child @seed="seedAccept" v-if="typeCode == '0'"></Child>
   
  </div>
</template>

<script>
// 引入子组件
import Child from "./subassembly/son.vue";
export default {
  data() {
    return {
      //typeCode: "0", //通过"0" "1"判断显示哪个页面;0:子组件1页面;1:子组件2页面
        typeCode: "0",
    };
  },
  //一定要注册组件
  components: {
    Child,
    Electronic,
  },
  methods: {
    seedAccept(data) {
      console.log(data, "子组件传给父组件的值");
    }
   
  },
};
</script>

路由参数传递:

query

通过query传参
 <router-link :to="{
        path:'/home/message/detail',
        query:{
             id: msg.id,
             title:msg.title
        }
       }">
    点击打开详细-{{msg.id}}
</router-link>-->

简化请求路径
在index.js 中 通过name属性为路由 别名
path:'detail',
name:'dt',
component:Detail
  使用时 通过name属性触发路由  注意 name 不能同名
 <router-link :to="{
        name:'dt',//使用name进行路由
        query:{
             id: msg.id,
             title:msg.title
        }
       }">
    点击打开详细-{{msg.id}}
</router-link>-->
<h2>消息编号:{{ $route.query.id }}</h2>
<h2>消息标题:{{ $route.query.title }}</h2>

paramms

路由参数 params 参数 传递
path: 'detail/:id/:title', //使用占位符  声明 接收
name: 'dt',
component: Detail,
<router-link :to="{
          name:'dt',
          params:{
             id: msg.id,
             title:msg.title
          }
        }">
  点击打开详细-{{msg.id}}
</router-link>
获取
 <h2>消息编号:{{ $route.params.id }}</h2>
 <h2>消息标题:{{ $route.params.title }}</h2>

props

props 参数的传递
index.js
props:['','']
props:true  将params的参数 转换为props格式

props($route) {
    return{
        id:$route.params.id,
        title:$route.params.title
    }
}
在目标组件中 声明属性   props: ['id', 'title']

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue组件传值Vue框架中的一个重要功能,它允许不同的组件共享数据,实现数据的传递和交互。下面是Vue组件传值的最全面解释: 1. 父组件向子组件传值:父组件通过props属性向子组件传递数据,子组件通过props属性接收父组件传递的数据。这种方式适用于父子组件的数据传递,父组件可以向多个子组件传递数据。 2. 子组件向父组件传值:子组件通过$emit方法触发事件,父组件通过v-on指令监听事件,并通过事件对象获取子组件传递的数据。这种方式适用于子组件向父组件传递数据,子组件可以触发多个事件,父组件可以监听多个事件。 3. 兄弟组件传值:使用一个共同的父组件作为中介,通过props属性和$emit方法实现兄弟组件的数据传递。这种方式适用于兄弟组件的数据共享,需要注意父组件的数据传递和事件监听。 4. 使用Vuex进行状态管理:Vuex是Vue的状态管理库,可以实现多个组件的数据共享和状态管理。通过Vuex的store对象存储数据和状态,并通过mutations、actions和getters等方法实现数据的修改和获取。 5. 使用事件总线:通过Vue的事件机制,创建一个事件总线,多个组件可以通过事件总线进行数据传递。通过Vue实例的$emit方法触发事件,通过Vue实例的$on方法监听事件,并通过事件对象获取数据。 以上是Vue组件传值的最全面解释,需要根据具体的场景选择不同的传值方式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值