国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue中組件傳參的幾種方法

這篇具有很好參考價值的文章主要介紹了vue中組件傳參的幾種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.父子組件

  1. Props:通過在父組件中定義props屬性,將數(shù)據(jù)傳遞給子組件。子組件通過props屬性接收數(shù)據(jù)。例如:
// 父組件
<template>
  <child-component :message="hello"></child-component>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      hello: 'Hello World!'
    }
  }
}
</script>

// 子組件
<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>
  1. $emit:通過在子組件中觸發(fā)事件,將數(shù)據(jù)傳遞給父組件。父組件通過在子組件上監(jiān)聽事件,接收數(shù)據(jù)。例如:
// 子組件
<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$emit('message-sent', 'Hello World!')
    }
  }
}
</script>

// 父組件
<template>
  <child-component @message-sent="handleMessage"></child-component>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleMessage(message) {
      console.log(message) // 'Hello World!'
    }
  }
}
</script>
  1. Provide/Inject:通過在父組件中提供數(shù)據(jù),讓子孫組件可以注入數(shù)據(jù)。例如:
// 父組件
<template>
  <div>
    <provide-message :message="hello">
      <child-component></child-component>
    </provide-message>
  </div>
</template>

<script>
import ProvideMessage from './ProvideMessage.vue'
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ProvideMessage,
    ChildComponent
  },
  data() {
    return {
      hello: 'Hello World!'
    }
  }
}
</script>

// ProvideMessage組件
<template>
  <div>
    <slot></slot>
  </div>
</template>

<script>
export default {
  provide() {
    return {
      message: this.message
    }
  },
  props: {
    message: String
  }
}
</script>

// 子組件
<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  inject: ['message']
}
</script>

以上是Vue中組件傳參的三種常用方法,分別是Props、$emit和Provide/Inject。通過這些方法,我們可以在組件之間傳遞數(shù)據(jù),實現(xiàn)組件之間的通信。

2.兄弟組件

  1. 通過共同的父組件傳遞數(shù)據(jù):如果兩個兄弟組件有共同的父組件,可以通過在父組件中定義數(shù)據(jù),然后通過props屬性分別傳遞給兩個兄弟組件。例如:
// 父組件
<template>
  <div>
    <child-component-1 :message="hello"></child-component-1>
    <child-component-2 :message="world"></child-component-2>
  </div>
</template>

<script>
import ChildComponent1 from './ChildComponent1.vue'
import ChildComponent2 from './ChildComponent2.vue'

export default {
  components: {
    ChildComponent1,
    ChildComponent2
  },
  data() {
    return {
      hello: 'Hello',
      world: 'World'
    }
  }
}
</script>

// ChildComponent1組件
<template>
  <div>{{ message }}!</div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>

// ChildComponent2組件
<template>
  <div>{{ message }}!</div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>
  1. 通過事件總線傳遞數(shù)據(jù):可以在Vue實例中創(chuàng)建一個事件總線,然后在兄弟組件中分別觸發(fā)和監(jiān)聽事件,從而實現(xiàn)數(shù)據(jù)傳遞。例如:
// Vue實例
<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  created() {
    this.$on('message-sent', (message) => {
      this.message = message
    })
  }
}
</script>

// ChildComponent1組件
<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$root.$emit('message-sent', 'Hello')
    }
  }
}
</script>

// ChildComponent2組件
<template>
  <div>{{ message }} World!</div>
</template>

<script>
export default {
  computed: {
    message() {
      return this.$root.message
    }
  }
}
</script>
  1. 通過Vuex狀態(tài)管理傳遞數(shù)據(jù):可以使用Vuex來管理應用程序的狀態(tài),從而實現(xiàn)兄弟組件之間的數(shù)據(jù)傳遞。例如:
// Vuex store
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    message: ''
  },
  mutations: {
    setMessage(state, message) {
      state.message = message
    }
  }
})

// ChildComponent1組件
<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$store.commit('setMessage', 'Hello')
    }
  }
}
</script>

// ChildComponent2組件
<template>
  <div>{{ message }} World!</div>
</template>

<script>
export default {
  computed: {
    message() {
      return this.$store.state.message
    }
  }
}
</script>

以上是Vue中兄弟組件傳參的三種常用方法,分別是通過共同的父組件傳遞數(shù)據(jù)、通過事件總線傳遞數(shù)據(jù)和通過Vuex狀態(tài)管理傳遞數(shù)據(jù)。根據(jù)具體的場景和需求,選擇合適的方法來實現(xiàn)兄弟組件之間的數(shù)據(jù)傳遞。

3.祖先后代

  1. 通過props和 e m i t 傳遞數(shù)據(jù):祖先組件可以通過 p r o p s 屬性將數(shù)據(jù)傳遞給中間組件,中間組件再通過 p r o p s 屬性將數(shù)據(jù)傳遞給后代組件。后代組件可以通過 emit傳遞數(shù)據(jù):祖先組件可以通過props屬性將數(shù)據(jù)傳遞給中間組件,中間組件再通過props屬性將數(shù)據(jù)傳遞給后代組件。后代組件可以通過 emit傳遞數(shù)據(jù):祖先組件可以通過props屬性將數(shù)據(jù)傳遞給中間組件,中間組件再通過props屬性將數(shù)據(jù)傳遞給后代組件。后代組件可以通過emit事件將數(shù)據(jù)傳遞回祖先組件。例如:
// 祖先組件
<template>
  <div>
    <middle-component :message="hello"></middle-component>
  </div>
</template>

<script>
import MiddleComponent from './MiddleComponent.vue'

export default {
  components: {
    MiddleComponent
  },
  data() {
    return {
      hello: 'Hello'
    }
  }
}
</script>

// 中間組件
<template>
  <div>
    <child-component :message="message" @message-sent="sendMessage"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  props: {
    message: String
  },
  methods: {
    sendMessage(message) {
      this.$emit('message-sent', message)
    }
  }
}
</script>

// 后代組件
<template>
  <div>{{ message }} World!</div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>
  1. 通過provide和inject傳遞數(shù)據(jù):祖先組件可以通過provide方法提供數(shù)據(jù),后代組件可以通過inject方法注入數(shù)據(jù)。例如:
// 祖先組件
<template>
  <div>
    <middle-component>
      <child-component></child-component>
    </middle-component>
  </div>
</template>

<script>
import MiddleComponent from './MiddleComponent.vue'

export default {
  components: {
    MiddleComponent
  },
  provide() {
    return {
      message: 'Hello'
    }
  }
}
</script>

// 中間組件
<template>
  <div>
    <slot></slot>
  </div>
</template>

// 后代組件
<template>
  <div>{{ message }} World!</div>
</template>

<script>
export default {
  inject: ['message']
}
</script>
  1. 通過Vuex狀態(tài)管理傳遞數(shù)據(jù):祖先組件和后代組件都可以通過Vuex來管理應用程序的狀態(tài),從而實現(xiàn)數(shù)據(jù)傳遞。例如:
// Vuex store
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    message: 'Hello'
  },
  mutations: {
    setMessage(state, message) {
      state.message = message
    }
  }
})

// 祖先組件
<template>
  <div>
    <middle-component>
      <child-component></child-component>
    </middle-component>
  </div>
</template>

<script>
import MiddleComponent from './MiddleComponent.vue'

export default {
  components: {
    MiddleComponent
  }
}
</script>

// 中間組件
<template>
  <div>
    <slot></slot>
  </div>
</template>

// 后代組件
<template>
  <div>{{ message }} World!</div>
</template>

<script>
export default {
  computed: {
    message() {
      return this.$store.state.message
    }
  }
}
</script>

以上是Vue中祖先組件和后代組件傳遞數(shù)據(jù)的三種常用方法,分別是通過props和$emit傳遞數(shù)據(jù)、通過provide和inject傳遞數(shù)據(jù)和通過Vuex狀態(tài)管理傳遞數(shù)據(jù)。根據(jù)具體的場景和需求,選擇合適的方法來實現(xiàn)祖先組件和后代組件之間的數(shù)據(jù)傳遞。

4.參數(shù)傳遞和插槽之間的聯(lián)系

在Vue中,傳參和插槽是兩個不同的概念,但它們之間有一定的關系。

傳參是指在組件之間傳遞數(shù)據(jù),可以通過props和$emit、provide和inject、Vuex等方式實現(xiàn)。傳參的目的是讓組件之間可以共享數(shù)據(jù),從而實現(xiàn)組件之間的通信。

插槽是指在組件中定義一個或多個插槽,然后在使用該組件時,可以在插槽中插入任意內(nèi)容。插槽的目的是讓組件更加靈活,可以根據(jù)使用場景動態(tài)地插入不同的內(nèi)容。

傳參和插槽之間的關系在于,傳參可以用來控制插槽中的內(nèi)容。例如,可以通過props屬性將數(shù)據(jù)傳遞給子組件,在子組件中使用插槽來展示這些數(shù)據(jù)。又例如,可以通過$emit事件將子組件中的數(shù)據(jù)傳遞給父組件,在父組件中使用插槽來展示這些數(shù)據(jù)。

下面是一個示例,演示了如何通過傳參和插槽來控制組件中的內(nèi)容:

// 父組件
<template>
  <div>
    <child-component :message="hello">
      <template #default="{ message }">
        <div>{{ message }} World!</div>
      </template>
    </child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      hello: 'Hello'
    }
  }
}
</script>

// 子組件
<template>
  <div>
    <slot :message="message"></slot>
  </div>
</template>

<script>
export default {
  props: {
    message: String
  },
  data() {
    return {
      message: this.message
    }
  }
}
</script>

在上面的示例中,父組件通過props屬性將數(shù)據(jù)傳遞給子組件,子組件通過插槽將數(shù)據(jù)傳遞給父組件。具體來說,父組件將數(shù)據(jù)hello傳遞給子組件,子組件將數(shù)據(jù)message傳遞給插槽,父組件通過插槽接收數(shù)據(jù)并展示在頁面上。

總之,傳參和插槽是兩個不同的概念,但它們之間有一定的關系。傳參可以用來控制插槽中的內(nèi)容,從而實現(xiàn)組件之間的通信和動態(tài)渲染。文章來源地址http://www.zghlxwxcb.cn/news/detail-652267.html

到了這里,關于vue中組件傳參的幾種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序返回上級頁面?zhèn)鲄⒌膸追N方法

    在做微信小程序跳轉(zhuǎn)頁面,經(jīng)常會遇到二級頁面要返回上級頁面,并且需要攜帶參數(shù),wx.navigateTo()跳轉(zhuǎn)大家都知道直接在url上面拼接參數(shù),之后再二級頁面onLoad(options)里獲取,但是返回頁面wx.navigateBack()不可以那樣做,所以就可以用以下幾種方式來做,具體看個人業(yè)務適合用

    2024年02月08日
    瀏覽(33)
  • taro跳轉(zhuǎn)頁面?zhèn)鲄⒌膸追N方式

    我之前在網(wǎng)上也搜了挺多taro傳參的方式,這里我總結(jié)一下 路由跳轉(zhuǎn)分Taro.navigateTo與Taro.redirectTo, 但是這兩種方法只適用于傳遞少量參數(shù) Taro.navigateTo跳轉(zhuǎn)時是將新的頁面加載過來,最多加載到10層,返回時去的是上一頁; Taro.redirectTo跳轉(zhuǎn)的同時將當前頁面銷毀,返回時去的是

    2024年02月07日
    瀏覽(45)
  • 微信小程序頁面之間傳參的幾種方式

    目錄 前言 第一種:url傳值 url傳值使用詳細說明 api跳轉(zhuǎn) 組件跳轉(zhuǎn) 第二種:將值緩存在本地,再從本地取值 第三種:全局傳值(應用實例傳值) 第四種:組件傳值 第五種:使用通信通道(通信通道是wx.navitageTo()獨有的) 第六中:使用頁面棧(只對當前頁面棧中存在的頁面生效

    2024年04月13日
    瀏覽(31)
  • Vue3父子組件間傳參通信

    Vue3父子組件間傳參通信

    本文主要是記錄Vue3在setup語法糖下的父子組件間傳參的四種方式 Vue3+TypeScript 父組件傳值給子組件主要是由父組件為子組件通過v-bind綁定數(shù)值,而后傳給子組件;子組件則通過defineProps接收使用。 如下為父組件 Father.vue 如下為子組件Son.vue 父組件 Father.vue 中在調(diào)用 Son.vue 這個子

    2024年01月19日
    瀏覽(26)
  • vue引入組件的幾種方法

    vue引入組件的幾種方法

    目錄 一、常用的局部引入 二、創(chuàng)建一個js 進行統(tǒng)一注冊? ?然后在main.js引入統(tǒng)一管理的js文件實現(xiàn)全局注冊 三、自動注冊全局引入 總結(jié): 在哪個頁面需要就在那個頁面 引入 、 注冊 、 使用 1、global.js統(tǒng)一注冊管理: 2、在main.js中引入?global.js實現(xiàn)全局注冊 優(yōu)點: 減少每個

    2024年02月16日
    瀏覽(17)
  • vue子組件調(diào)用父組件方法的幾種方式

    一、直接在子組件中通過? this.$parent.event來調(diào)用父組件方法 父組件 子組件 二、在子組件里用 $emit 向父組件觸發(fā)一個事件,父組件監(jiān)聽這個事件 父組件 子組件 三、父組件將方法傳入子組件,子組件直接調(diào)用 父組件 子組件

    2024年02月12日
    瀏覽(25)
  • Vue3實現(xiàn)組件級基類的幾種方法

    Vue3的組件有三種代碼組織方式 純Option API (不含setup) option API + setup 純 setup (即composition API) 對于這三種形式,設置基類的方法也略有不同。 vue3提供了 mixins和extends,但是嘗試之后發(fā)現(xiàn)這兩種方法只支持純OptionAPI,設置的data會被識別,但是設置的setup里return 的 reactive,完

    2024年02月01日
    瀏覽(22)
  • vue組件間傳值的六種方法

    vue組件間傳值的六種方法

    父組件代碼: 子組件代碼: 頁面顯示: 子組件代碼: 父組件代碼: 頁面顯示: 父子組件傳值原理:父子組件的關系可以總結(jié)為 prop 向下傳遞,事件向上傳遞。父組件通過 prop 給子組件下發(fā)數(shù)據(jù),子組件通過事件給父組件發(fā)送消息,如下圖所示: ref:如果在普通的 DOM 元素

    2024年02月15日
    瀏覽(30)
  • uniapp 頁面間傳參方法

    頁面之間傳參大概可分為以下幾種情況: 上級頁面 → 下級頁面(單向) 上級頁面 ← 下級頁面(單向) 上級頁面 ? 下級頁面(雙向) uni.navigateTo:URL編程式傳參 作為最常用也是最簡單的跳轉(zhuǎn)攜帶參數(shù)的API,這里不多贅述,想詳細了解的朋友可以前往官方文檔學習,這里只

    2024年02月07日
    瀏覽(29)
  • 第三方組件及計算屬性傳參的問題解決方式

    唉,好想玩滋嘣。 表格數(shù)據(jù)某一列需要用的計算屬性時,模板中使用計算屬性 fullName 就會直接調(diào)用 fullName 函數(shù),而在模板中 fullName(item) 相當于 fullName()(item) ,此處為函數(shù)柯里化。 封裝好的組件的事件回調(diào)函數(shù)想要傳其它參數(shù),事件的回調(diào)直接寫 :before-upload=\\\"beforeUpload(\\\'a\\\')

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包