前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >父子组件传值方法

父子组件传值方法

作者头像
全栈程序员站长
发布2022-08-29 13:40:55
发布2022-08-29 13:40:55
55100
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

一. ref传值

1. 子组件(<Invitation>)定义一个变量visible 2 . 父组件使用ref接收

代码语言:javascript
代码运行次数:0
运行
复制
 <Invitation ref="dialog" />

3. 父组件可修改值(visible是子组件的一个变量)

代码语言:javascript
代码运行次数:0
运行
复制
this.$refs.dialog.visible=true;

二. 父传子

1. 父组件使用v-bind绑定一个变量variable(v-bind:变量名=”值”)

代码语言:javascript
代码运行次数:0
运行
复制
<Invitation v-bind:visible="dialogVisible" @getData="getdata" />

2. 子组件用props接收(与created同级)

代码语言:javascript
代码运行次数:0
运行
复制
props: ["visible"]

三. 子传父

1. 子组件使用this.$emit绑定一个事件和值

代码语言:javascript
代码运行次数:0
运行
复制
this.$emit("getData", this.data1);

2. 父组件使用@子组件绑定事件=新方法名

代码语言:javascript
代码运行次数:0
运行
复制
<Invitation v-bind:visible="dialogVisible" @getData="getdata" />

3. 父组件定义新方法名接收值

代码语言:javascript
代码运行次数:0
运行
复制
getdata(val) {
    console.log(val);
},

四. VueX传值

1. 建立或者使用已有的store文件夹下面的index.js

代码语言:javascript
代码运行次数:0
运行
复制
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
    state: {
        userid:'',      // 最后获取的变量名
        usertype:'',
    },
    getters: {          // 一般不用
        getinfo(state){
            return state.userid;
        }
    },
    mutations: {        // getUserid就是值来源处定义的方法,id是随便定义的一个变量去接收对应的值
        getUserid(state,id){
            state.userid = id;
        },
    },
    actions: {
    },
    modules: {
    }
})

2. main.js里面引入store文件夹

代码语言:javascript
代码运行次数:0
运行
复制
// 默认已经引入
import store from './store'
new Vue({
    store,
}).$mount('#app')

3. 设置变量的值

代码语言:javascript
代码运行次数:0
运行
复制
this.$store.commit("getUserid", this.userid);  
// getUserid表示方法名,在第一步调用;
// this.userid表示需要传递的值

4. 调用已经设置的值

代码语言:javascript
代码运行次数:0
运行
复制
<script>
    import { mapState } from "vuex";
    export default {
        computed: {
            ...mapState(["userid"]),    // userid是store/index.js的state里面定义的变量名
        },
        created() {
            console.log(111, this.userid);
        },
    };
</script>

五. bus事件总线传值(多用于兄弟组件传值)

1. main.js中创建一个事件总线

代码语言:javascript
代码运行次数:0
运行
复制
// 建立中转站
let bus = new Vue();
Vue.prototype.bus = bus;

2. 使用emit绑定一个方法和值

代码语言:javascript
代码运行次数:0
运行
复制
this.bus.$emit("getData", this.data1);

3. 获取值

代码语言:javascript
代码运行次数:0
运行
复制
this.bus.$on("getData",function(val){
    console.log(val);
})

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145622.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档