父子组件传值方法

父子组件传值方法vue组件间传值方法:ref、子传父、父传子、VueX、bus。

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

一. ref传值

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

 <Invitation ref="dialog" />

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

this.$refs.dialog.visible=true;

二. 父传子

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

<Invitation v-bind:visible="dialogVisible" @getData="getdata" />

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

props: ["visible"]

三. 子传父

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

this.$emit("getData", this.data1);

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

<Invitation v-bind:visible="dialogVisible" @getData="getdata" />

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

getdata(val) {
    console.log(val);
},

四. VueX传值

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

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文件夹

// 默认已经引入
import store from './store'
new Vue({
    store,
}).$mount('#app')

         3. 设置变量的值

this.$store.commit("getUserid", this.userid);  
// getUserid表示方法名,在第一步调用;
// this.userid表示需要传递的值

         4. 调用已经设置的值

<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中创建一个事件总线

// 建立中转站
let bus = new Vue();
Vue.prototype.bus = bus;

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

this.bus.$emit("getData", this.data1);

        3. 获取值

this.bus.$on("getData",function(val){
    console.log(val);
})

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么安装pandas库_python第三方库pandas

    怎么安装pandas库_python第三方库pandas问题现象:PyCharm中运行程序,报错,提示“ModuleNotFoundError:Nomodulenamed’pandas’”第一种方法:1.电脑WIN+R,输入cmd,输入pipinstallpandas,等待下载完成即可。2.如果有以下提示,说明pip的版本可能不一致,需要解决冲突。想更新pip,输入pipinstall–upgradepip,报错,提示“Nomodulenamedpip”3.解决方法,输入python-mensu

    2022年8月29日
    4
  • WIFI 2.4G及5G信道一览表

    WIFI 2.4G及5G信道一览表目前主流的无线WIFI网络设备802.11a/b/g/n/ac:传统802.11•1997年发布•两个原始数据率:1Mbps和2Mbps•跳频展频(FHSS)或直接序列展布频谱(DSSS)•三个不重叠的信道中,工业、科学、医学(ISM)频段频率为2.4GHz•最初定义的载波侦听多点接入/避免冲撞(CSMA-CA)802.11a•1999年发布•…

    2022年6月7日
    154
  • Poemscape|Beta阶段第一天[通俗易懂]

    Poemscape|Beta阶段第一天[通俗易懂]Poemscape|Beta阶段第一天

    2022年4月21日
    55
  • java获取当前时间到毫秒_java获取当前时间毫秒

    java获取当前时间到毫秒_java获取当前时间毫秒()为获取当前系统时间,也可使用当前时间戳获取时间戳三种方法执行效率比较:importjava.util.Calendar;importjava.util.Date;publicclassTimeTest{……java获得系统时间转换成字符串关键字:java有时候经常用到JAVA时间转换如字符串转换成时间,时间转换成字符串1.long字符串转换成…

    2025年9月19日
    6
  • PotPlayer使用技巧和常用快捷键

    PotPlayer使用技巧和常用快捷键常用快捷键Alt+K屏幕旋转

    2022年5月21日
    76
  • golang 激活码_最新在线免费激活[通俗易懂]

    (golang 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    129

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号