日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue 中如何將函數作為 props 傳遞給組件的實現代碼

瀏覽:32日期:2023-01-21 14:09:56

本文 GitHub https://github.com/qq44924588 ... 上已經收錄,更多往期高贊文章的分類,也整理了很多我的文檔,和教程資料。歡迎Star和完善,大家面試可以參照考點復習,希望我們一起有點東西。

Vue 新手經常問的一個常見問題。可以將字符串、數組、數字和對象作為props傳遞。但是你能把一個函數當作一個props來傳遞嗎?

雖然可以將函數作為props傳遞,但這種方式不好。相反,Vue 有一個專門為解決這問題而設計的功能,接下來,我們來看看。

向組件傳入函數

獲取一個函數或方法并將其作為一個prop傳遞給子組件相對比較簡單。實際上,它與傳遞任何其他變量方式完全相同:

<template> <ChildComponent :function='myFunction' /></template>export default { methods: { myFunction() { // ... } }};

正如前面所說,在Vue中永遠都不要做這樣的事情。

為什么?Vue有更好的東西。

大家都說簡歷沒項目寫,我就幫大家找了一個項目,還附贈【搭建教程】。

React vs Vue

如果使用過 React,就會習慣傳遞函數方式。

在React中,我們可以將一個函數從父組件傳遞給子組件,以便子組件能夠向上與父組件通信。props 和 data 向下流動,函數調用向上流動。

然而,Vue有一種不同的機制來實現子到父通信方式,Vue 使用事件。

這與 DOM 的工作方式相同-與React相比,Vue 的方式與瀏覽器的一致性更高。 元素可以發出事件,并且可以監聽這些事件。

因此,盡管在Vue中可以把函數作為prop傳遞,但它被認為是一種反模式。

使用事件

事件是我們與 Vue 中的父組件通信的方式。

這里有一個簡短的例子來說明事件是如何工作的。

首先,我們將創建子組件,該子組件在創建時會發出一個事件:

// ChildComponentexport default { created() { this.$emit(’created’); }}

在父組件中,我們監聽該事件:

<template> <ChildComponent @created='handleCreate' /></template>export default { methods: { handleCreate() { console.log(’Child has been created.’); } }};

事件可以做的事情還有很多,而這僅僅是皮毛。強烈建議查看官方的Vue文檔來了解更多關信息,絕對值得一讀。

但是事件并不能完全解決我們所有的問題。

從子組件訪問父組件的作用域里數據

在許多情況下,我們試圖解決的問題是訪問來自不同作用域的數據。

父組件有一個作用域,子組件有另一個作用域。

通常,我們希望從父組件訪問子組件中的值,或者從子組件訪問父組件中的值。Vue阻止我們直接這樣做,這是一件好事。

它使我們的組件更加具有封裝性,并提高了它們的可重用性。這使我們的代碼更簡潔,并從長遠來看避免了許多令人頭痛的問題。

但是有時候我們可能會試圖通過函數來繞過這個問題。

從父類獲取值

如果希望子組件訪問父組件的方法,那么將方法直接作為 prop 傳遞似乎簡單明了。

在父組件中我們會這樣做:

<!-- Parent --><template> <ChildComponent :method='parentMethod' /></template>// Parentexport default { methods: { parentMethod() { // ... } }}

在我們的子組件中,使用傳入的方法:

這樣做會有什么問題?

這并不是完全錯誤的,但是在這種情況下使用事件會更好。

然后,當需要時,子組件不會調用該函數,而只是發出一個事件。然后父組件將接收該事件,調用該函數,拼裝將更新傳遞給子組件的 prop。

這是達到同樣效果的更好的方法。

在其他情況下,我們可能想要從子元素中獲取一個值到父元素中,我們為此使用了函數。

例如,你可能正在這樣做。父函數接受子函數的值并對其進行處理:

<!-- Parent --><template> <ChildComponent :method='parentMethod' /></template>// Parentexport default { methods: { parentMethod(valueFromChild) { // Do something with the value console.log(’From the child:’, valueFromChild); } }}

在子組件中調用傳入的方法并將子組件的值作為方法的參數傳入:

// Childexport default { props: { method: { type: Function }, }, data() { return { value: ’I am the child.’ }; }, mounted() { // Pass a value to the parent through the function this.method(this.value); }}

這也不是完全錯誤的,這樣做是可行的。

只是這不是在Vue中的最佳方式。相反,事件更適合解決這個問題。我們可以使用事件來實現完全相同的事情

<!-- Parent --><template> <ChildComponent @send-message='handleSendMessage' /></template>// Parentexport default { methods: { handleSendMessage(event, value) { // Our event handler gets the event, as well as any // arguments the child passes to the event console.log(’From the child:’, value); } }}

在子組件中,我們發出事件:

// Childexport default { props: { method: { type: Function }, }, data() { return { value: ’I am the child.’ }; }, mounted() { // Instead of calling the method we emit an event this.$emit(’send-message’, this.value); }}

事件在Vue中非常有用,但它們也不能100%地解決我們的問題。有時,我們需要以不同的方式從父級訪問子級的作用域。

為此,我們使用作用域插槽!

使用作用域插槽

作用域插槽是一個更高級的主題,但是它們也非常有用。事實上,我認為它們是Vue提供的最強大的功能之一。

它們弱化了子作用域和父作用域之間的界限。但是它以一種非常干凈的方式完成,使得我們的組件像以前一樣可組合。

如果你想了解更多關于作用域插槽是如何工作的,可以先看看官方文檔,或者我們下回講解。

代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行log 調試,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug。

來源:https://stackoverflow.com/que...

總結

到此這篇關于Vue 中如何將函數作為 props 傳遞給組件的實現代碼的文章就介紹到這了,更多相關vue props 傳遞給組件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品欧美成人高清一区二区| 免费久久99精品国产自在现线| 欧美韩一区二区| 国产视频一区二区在线播放| 欧美精品福利| 日韩精品欧美| 久久国产三级| 免费在线观看视频一区| 午夜日韩在线| 国产精品成人**免费视频| 免费精品国产| 日韩三级久久| 亚洲1区在线观看| 不卡一区2区| 国产精品1区在线| 水蜜桃久久夜色精品一区的特点 | 精品香蕉视频| 欧美国产三级| 日韩av资源网| 99综合视频| 国产麻豆一区二区三区| 亚洲精品影视| 日本综合精品一区| 日韩和欧美一区二区三区| 综合激情一区| 久久亚洲风情| japanese国产精品| 成人午夜国产| 伊伊综合在线| 伊人精品视频| 美女视频一区在线观看| 欧洲一区二区三区精品| 蜜桃久久久久久| 中文字幕高清在线播放| 天堂√8在线中文| 午夜欧美视频| 麻豆精品久久久| 另类中文字幕国产精品| 日韩av网站在线免费观看| 国产成人精选| 亚洲精品看片| 狠狠爱成人网| 精品亚洲二区| 视频一区中文字幕| 免费日韩一区二区三区| 亚洲1区在线| 夜夜嗨一区二区三区| 蜜桃精品在线| se01亚洲视频| 欧美激情三区| 国产一区二区精品| 国产精品毛片视频| 一区久久精品| 激情久久中文字幕| 欧美一区影院| 日韩视频1区| 中文字幕一区二区精品区| 亚洲资源在线| 国产午夜久久| 红桃视频国产一区| 三级在线看中文字幕完整版| 亚洲综合福利| 欧美91福利在线观看| 精品久久一区| 欧美综合精品| 亚洲综合色婷婷在线观看| 91精品推荐| 日韩精品一区二区三区免费观影| 麻豆久久一区| 亚洲精品婷婷| 日韩高清成人在线| 高清一区二区三区av| 成人av动漫在线观看| 午夜亚洲福利| 国产高潮在线| 久久亚洲国产| 美女久久久久| 欧美日韩国产高清| 激情综合自拍| 亚洲精品自拍| 欧美专区一区| 水蜜桃精品av一区二区| 在线一区电影| 蜜臀av国产精品久久久久| 综合色就爱涩涩涩综合婷婷| 欧美激情另类| 日韩三级视频| 伊人久久av| 激情婷婷欧美| 美女国产一区| 在线看片一区| 欧美综合社区国产| 91一区二区三区四区| 成人午夜精品| 日韩中文字幕1| 日韩高清在线不卡| 91成人网在线观看| 久久久91麻豆精品国产一区| 最新国产拍偷乱拍精品| 欧美亚洲免费| 高清日韩中文字幕| 日韩avvvv在线播放| 在线精品亚洲欧美日韩国产| 99精品美女| 久久精品九色| 国产精品视频一区视频二区| 免费欧美一区| 国产精品扒开腿做爽爽爽软件| 成人福利av| 国产精品jk白丝蜜臀av小说| 亚洲精品黄色| 日韩精品一二三| 欧美另类中文字幕 | 999国产精品视频| 美女精品一区二区| 欧美日韩视频免费看| 久久成人国产| 久久久成人网| 国产精品传媒麻豆hd| 亚洲一区网站| 亚洲黑丝一区二区| 精品久久视频| 国内揄拍国内精品久久| 天堂av在线一区| 午夜av一区| 国产综合激情| 亚洲视频www| 综合五月婷婷| 亚洲女人av| 丝袜国产日韩另类美女| 免费成人在线观看| 日韩中文字幕| 91精品国产经典在线观看| 国产日本亚洲| 国产精品毛片视频| 日本а中文在线天堂| 日韩国产专区| 欧美日韩一二三四| 日韩在线播放一区二区| 日本不卡一区二区| 日本一区二区三区中文字幕| 国产精品一区二区三区av麻| 欧美激情 亚洲a∨综合| 免费成人在线视频观看| 日精品一区二区三区| 国产精品国码视频| 欧产日产国产精品视频| 99久久久久久中文字幕一区| 日韩精品欧美激情一区二区| 亚洲精品国产偷自在线观看| 亚洲午夜久久久久久尤物| 久久婷婷亚洲| 精品一区二区三区四区五区| 91欧美日韩| 不卡在线一区| 日本不卡视频一二三区| 国产精品毛片久久久| 香蕉成人av| 久久精品亚洲欧美日韩精品中文字幕| 午夜国产精品视频| 国产偷自视频区视频一区二区| 免费日韩精品中文字幕视频在线| 蜜臀va亚洲va欧美va天堂| 日本不卡不码高清免费观看 | 蜜桃国内精品久久久久软件9| 综合激情视频| 日韩国产欧美| 好吊一区二区三区| 婷婷五月色综合香五月| 麻豆国产欧美日韩综合精品二区| 国产一区二区三区91| 免费精品国产| 国产极品久久久久久久久波多结野| 你懂的网址国产 欧美| 日韩一区三区| 亚洲一区二区网站| 国产福利亚洲| 国产一区二区三区四区五区传媒| 激情91久久| 国产成人精品亚洲线观看| 日韩中文字幕一区二区三区| 中文字幕在线免费观看视频| 久久大逼视频| 高潮一区二区| 日韩激情视频网站| 1000部精品久久久久久久久| 夜鲁夜鲁夜鲁视频在线播放| 日韩深夜视频| 午夜精品免费| 精品亚洲美女网站| 日韩免费久久| 国产精品日韩精品在线播放| 蜜桃久久久久| 亚洲欧美激情诱惑| 欧美少妇精品| 亚洲精品动态| 久久狠狠婷婷| 麻豆精品视频在线| 国产香蕉精品| 香蕉久久99|