最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組件傳值方式(props屬性,父到子,子到父,兄弟傳值)

 更新時間:2024年06月07日 09:45:16   作者:web Rookie  
這篇文章主要介紹了Vue組件傳值方式(props屬性,父到子,子到父,兄弟傳值),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

Vue是數據驅動視圖更新的框架,平時寫業(yè)務時,都會把頁面不同模塊拆分成一個一個vue組件, 所以對于vue來說組件間的數據通信非常重要

提示:以下是本篇文章正文內容,下面案例可供參考

一、props是什么?

  • propsVue實例上的一個屬性,用于組件的傳值
  • 作用:為了接收外面?zhèn)鬟^來的數據,與data、methods等是一個級別的配置項。
  • props在子屬性和父屬性之間形成一個單向向下的綁定(單向數據流)
  • 當父屬性更新時,它會向下流向子屬性,但不會反過來。這可以防止子組件意外改變父組件的狀態(tài)

使用規(guī)則

<script>
export default {
	//使用方式一
    props:["count"],
    //使用方式二
    props:{
        count:{
        	//type:類型規(guī)定
            type:Number,
            //default:默認值
            default:0,
            //require:是否是必傳
            require:true,
        }
    },
}
</script>

二、父傳子 props

實現步驟

  • 父傳子通過 props實現
  • 父組件通過自定義變量傳入子組件
  • 子組件利用props接收父組件值
  • 接收props不能修改,但是可以在組件中直接使用
  • 如果想要修改props,先把props賦值給其他變量,在進行修改

代碼實現

//父組件
<template>
  <div style="outline:1px solid red">
    <h1>我是父組件</h1>
    <button @click="count+=1">要傳遞的值{{count}}</button>
    //第三步通過v-bind動態(tài)傳入子組件
    <Child :count="count"></Child>
  </div>
</template>

<script>
//第一步導入組件
import Child from "../child/index.vue"
export default {
//第二步組件注冊
    components:{
        Child,
    },
    data () {
    return {
      count: 1
    }
  }
}
//子組件
<template>
  <div style="outline:1px solid green">
    <h1>我是子組件</h1>
    // 第二步在頁面中使用
    <div>接收父組件傳值:{{count}}</div>
  </div>
</template>

<script>
export default {
	//第一步利用 props 接收
	//可以直接在頁面中使用,但不可修改;修改需要先將 props 中的數據賦值給 data 中的變量
	// props:["count"],
    props:{
        count:{
            type:Number,
            default:0,
            require:true,
        }
    },
}

效果展示

二.子傳父 $emit

實現步驟

  • 子傳父通過 $emit 實現
  • 在子組件中通過 $emit 方法傳值給父組件
  • 在父頁面中的子組件標簽中自定義事件接收

代碼實現

//子組件
<template>
  <div style="outline:1px solid green">
    <h1>我是子組件</h1>
    <button @click="give">傳遞給父組件</button>
  </div>
</template>

<script>
export default {
  methods:{
    give(){
	 //第一步調用 $emit 傳遞參數
	 //emit 中第一個參數是在父頁面中接收的 事件名稱
	 //emit 中第二個嘗試是要傳遞的數據
      this.$emit("child",`我是子組件值+ ${new Date().getTime()}`)
    }
  }
}
// 父組件
<template>
  <div style="outline:1px solid red">
    <h1>我是父組件</h1>
       <div>我是接收子組件的值:{{this.childValue}}</div>
       // 第一步在子組件中自定義事件接收 emit 傳遞的事件
    <Child :count="count" @child="accept"></Child>
  </div>
</template>

<script>
import Child from "../child/index.vue"
export default {
    components:{
        Child,
    },
    data () {
    return {
      childValue:"",
    }
  },
  methods:{
  	// 第二步在事件接收使用 子組件的傳值
    accept(obj){
      this.childValue = obj
    }
  }
}

效果展示

三.兄弟傳值 EventBus

實現步驟

  • 兄弟之間傳值通過 EventBus實現
  • 在components文件中新建一個 js 文件,頁面中導入Vue實例,然后導出一個new Vue()
  • 在需要兄弟之間傳值的組件中導入這個文件
  • 傳值時通過導入的文件調用$emit 實現($emit("事件名稱",需要傳遞的值))
  • 接收時通過導入的文件調用$on通過回調函數實現

代碼實現

// component 文件夾中新建 eventBus.js 文件,用來實現兄弟組件通信
import Vue from "vue";

export default new Vue()
// 組件 A
<template>
 <div style="width: 100%; height: 100px; outline: 1px solid red">
   <button @click="send">A組件給B組件傳值</button>
 </div>
</template>

<script>
import bus from "../eventBus";
export default {
 methods: {
   send() {
     bus.$emit("share", `我是A組件+ ${new Date().getTime()}`);
   },
 },
};
</script>

<style lang="less" scoped>
</style>
// 組件 B
<template>
    <div style="width:100%;height:100px;outline:1px solid green">
        接收A組件的值{{this.accept}}
    </div>
</template>

<script>
import bus from "../eventBus"
    export default {
        data(){
            return{
                accept:''
            }
        },
        mounted(){
            bus.$on("share",val=>{
                this.accept = val
            })
        }
 }
</script>

效果展示

總結

  • 父傳值子通過props實現
  • 子傳父通過emit自定義事件 實現
  • 兄弟傳值通過 eventBus實現

目前暫時總結三種常用的組件傳值方法

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue3和vue2掛載實例到全局(自定義消息提示框組件方式)

    vue3和vue2掛載實例到全局(自定義消息提示框組件方式)

    這篇文章主要介紹了vue3和vue2掛載實例到全局(自定義消息提示框組件方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue之保留小數點兩位小數 使用filters(過濾器)

    vue之保留小數點兩位小數 使用filters(過濾器)

    這篇文章主要介紹了vue之保留小數點兩位小數 使用filters(過濾器),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Vue使用Axios添加自定義請求頭的多種方式

    Vue使用Axios添加自定義請求頭的多種方式

    Axios 是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中,這篇文章給大家介紹了Vue使用Axios添加自定義請求頭的多種方式,并通過代碼講解的非常詳細,需要的朋友可以參考下
    2025-05-05
  • vue vant中picker組件的使用

    vue vant中picker組件的使用

    這篇文章主要介紹了vue vant中picker組件的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue局部組件數據共享Vue.observable()的使用

    Vue局部組件數據共享Vue.observable()的使用

    隨著組件的細化,就會遇到多組件狀態(tài)共享的情況,今天我們介紹的是 vue.js 2.6 新增加的 Observable API ,通過使用這個 api 我們可以應對一些簡單的跨組件數據狀態(tài)共享的情況,感興趣的可以了解一下
    2021-06-06
  • 使用vue實現加載頁

    使用vue實現加載頁

    這篇文章主要為大家詳細介紹了使用vue實現加載頁,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue + echarts實現中國省份地圖點擊聯(lián)動

    vue + echarts實現中國省份地圖點擊聯(lián)動

    這篇文章主要介紹了vue + echarts實現中國地圖省份點擊聯(lián)動,需要的朋友可以參考下
    2022-04-04
  • 在vue.config.js中優(yōu)化webpack配置的方法

    在vue.config.js中優(yōu)化webpack配置的方法

    在日常開發(fā)中我們離不開打包工具webpack,但是不同的配置會影響我們項目的運行構建時間,也會影響打包之后項目包的大小,這篇文章記錄一下我使用過的可以優(yōu)化webpack的配置,需要的朋友可以參考下
    2024-05-05
  • vue.js實現簡單購物車功能

    vue.js實現簡單購物車功能

    這篇文章主要為大家詳細介紹了vue.js實現簡單購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • vue3實現H5表單驗證組件的示例

    vue3實現H5表單驗證組件的示例

    本文主要介紹了vue3實現H5表單驗證組件的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論

德清县| 呼伦贝尔市| 大冶市| 辰溪县| 土默特右旗| 湘潭市| 淄博市| 肇源县| 麻阳| 沛县| 麻栗坡县| 元谋县| 思茅市| 武冈市| 巴青县| 太仓市| 汉中市| 林周县| 涟水县| 宁河县| 连江县| 铜梁县| 双牌县| 榆社县| 北京市| 磐石市| 高邮市| 长阳| 阳高县| 罗城| 通道| 紫金县| 乌什县| 长白| 峨眉山市| 修文县| 昭觉县| 武汉市| 哈巴河县| 镇安县| 绍兴县|