日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue2中provide/inject的使用和响应式传值

發布時間:2024/3/13 vue 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue2中provide/inject的使用和响应式传值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、基本用法
  • 二、響應式
    • 1.方法一:傳遞的參數用一個方法返回
    • 2.方法二:把需要傳遞的參數定義成一個對象
  • 總結


前言

官網概念:這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在其上下游關系成立的時間里始終生效。


一、基本用法

在父組件中使用provide傳值,在子組件中用inject接收。

// 父組件 data() {return {name: "卷兒"} }, provide: function() {return {name: this.name}}, // 子組件 inject: ['name'],

這種方法傳遞過來的數據是沒有響應性的,當你改變父組件中的name時,子組件中接收的name并不會改變。
官方解釋:provide 和 inject 綁定并不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監聽的對象,那么其對象的 property 還是可響應的。

二、響應式

1.方法一:傳遞的參數用一個方法返回

// 父組件 data() {return {name: "卷兒"}},provide: function() {return {newName: () => this.name} // 子組件 inject: ['newName'], computed: {hnewName() {return this.newName()}} <!-- 子組件中的使用方式 --> <h2>{{ hnewName }}</h2> <!-- 推薦使用這種方法 --> <h2>{{ newName() }}</h2>

2.方法二:把需要傳遞的參數定義成一個對象

官方解釋:provide 和 inject 綁定并不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監聽的對象,那么其對象的 property 還是可響應的。

// 父組件 data() {return {obj: {name: "卷兒"}}},provide: function() {return {// 傳遞一個對象obj: this.obj}}, // 子組件 inject: ['obj'], computed: {// 也可以不用計算屬性重新定義objName() {return this.obj.name}} <!-- 子組件中的使用方法 --> <h2>obj的name: {{objName}}</h2> <h2>obj的name: {{obj.name}}</h2>

總結

主要解決深層次的組件嵌套,祖先組件向子孫組件之間傳值。
一層嵌套的父子組件可以使用props來傳值,props本身就是有相應性的。
根據自身代碼選擇合適的傳值方式,并不一定非要用provide/inject的傳值。

總結

以上是生活随笔為你收集整理的vue2中provide/inject的使用和响应式传值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。