成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Vue 中,如何將函數(shù)作為 props 傳遞給組件

開發(fā) 前端
Vue 新手經(jīng)常問的一個(gè)常見問題。可以將字符串、數(shù)組、數(shù)字和對(duì)象作為props傳遞。但是你能把一個(gè)函數(shù)當(dāng)作一個(gè)props來傳遞嗎?

Vue 新手經(jīng)常問的一個(gè)常見問題。可以將字符串、數(shù)組、數(shù)字和對(duì)象作為props傳遞。但是你能把一個(gè)函數(shù)當(dāng)作一個(gè)props來傳遞嗎?

[[325646]]

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

向組件傳入函數(shù)

獲取一個(gè)函數(shù)或方法并將其作為一個(gè)prop傳遞給子組件相對(duì)比較簡(jiǎn)單。實(shí)際上,它與傳遞任何其他變量方式完全相同:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

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

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

React vs Vue

如果使用過 React,就會(huì)習(xí)慣傳遞函數(shù)方式。

在React中,我們可以將一個(gè)函數(shù)從父組件傳遞給子組件,以便子組件能夠向上與父組件通信。props 和 data 向下流動(dòng),函數(shù)調(diào)用向上流動(dòng)。

然而,Vue有一種不同的機(jī)制來實(shí)現(xiàn)子到父通信方式,Vue 使用事件。

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

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

使用事件

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

這里有一個(gè)簡(jiǎn)短的例子來說明事件是如何工作的。

首先,我們將創(chuàng)建子組件,該子組件在創(chuàng)建時(shí)會(huì)發(fā)出一個(gè)事件:

 

  1. // ChildComponent 
  2. export default { 
  3.   created() { 
  4.     this.$emit('created'); 
  5.   } 

在父組件中,我們監(jiān)聽該事件:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

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

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

從子組件訪問父組件的作用域里數(shù)據(jù)

在許多情況下,我們?cè)噲D解決的問題是訪問來自不同作用域的數(shù)據(jù)。

父組件有一個(gè)作用域,子組件有另一個(gè)作用域。

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

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

但是有時(shí)候我們可能會(huì)試圖通過函數(shù)來繞過這個(gè)問題。

「從父類獲取值」

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

在父組件中我們會(huì)這樣做:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

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

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

這樣做會(huì)有什么問題?

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

然后,當(dāng)需要時(shí),子組件不會(huì)調(diào)用該函數(shù),而只是發(fā)出一個(gè)事件。然后父組件將接收該事件,調(diào)用該函數(shù),拼裝將更新傳遞給子組件的 prop。

這是達(dá)到同樣效果的更好的方法。

在其他情況下,我們可能想要從子元素中獲取一個(gè)值到父元素中,我們?yōu)榇耸褂昧撕瘮?shù)。

例如,你可能正在這樣做。父函數(shù)接受子函數(shù)的值并對(duì)其進(jìn)行處理:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

在子組件中調(diào)用傳入的方法并將子組件的值作為方法的參數(shù)傳入:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

這也不是完全錯(cuò)誤的,這樣做是可行的。

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

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

在子組件中,我們發(fā)出事件:

 

Vue 中,如何將函數(shù)作為 props 傳遞給組件

 

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

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

使用作用域插槽

作用域插槽是一個(gè)更高級(jí)的主題,但是它們也非常有用。事實(shí)上,我認(rèn)為它們是Vue提供的最強(qiáng)大的功能之一。

它們?nèi)趸俗幼饔糜蚝透缸饔糜蛑g的界限。但是它以一種非常干凈的方式完成,使得我們的組件像以前一樣可組合。

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

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-04-08 18:29:20

Vue組件屬性

2024-04-08 08:29:25

父組件v-modelemit

2009-06-04 16:19:52

GlassFish作為

2020-07-22 10:40:14

算法知識(shí)產(chǎn)權(quán)CIO

2021-11-24 15:20:04

FreeDOSLinux

2022-05-31 10:38:50

Linux密碼scp

2010-08-11 15:35:47

Flex DataGr

2010-08-11 15:51:45

Flex DataGr

2021-05-06 07:40:56

Vue3 Vue2 組件

2017-07-11 18:00:21

vue.js數(shù)據(jù)組件

2025-02-12 10:51:51

2021-09-14 14:50:05

SASTDevSecOps應(yīng)用安全

2024-11-15 10:03:43

應(yīng)用模板Vue

2023-03-03 12:14:30

2021-09-22 07:57:23

Vue3 插件Vue應(yīng)用

2022-11-25 16:27:07

應(yīng)用開發(fā)鴻蒙

2021-09-01 18:42:57

React Props組件

2024-04-28 11:36:07

LambdaPython函數(shù)

2009-08-26 18:05:25

ViewState持久

2018-10-22 14:48:39

KafkaHadoop代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产成人在线视频播放 | 婷婷丁香在线视频 | 中文字幕精品一区二区三区精品 | 中文字幕免费观看 | 91免费观看国产 | 精品亚洲一区二区三区四区五区 | 在线不卡视频 | 国产综合久久久久久鬼色 | 国产96色在线 | 成人精品一区二区户外勾搭野战 | 精品国产色 | 精品国产一区二区三区在线观看 | 精品免费观看 | 国产精品1区2区 | 欧美精品video | 午夜精品久久久久久不卡欧美一级 | 亚洲国产一区在线 | 日韩精品一区二区三区中文字幕 | 亚洲第一区久久 | 色综合色综合 | 男女那个视频 | 日韩在线免费视频 | www亚洲精品| 一区二区三区视频 | 欧美性受xxx | 国产精品国产三级国产aⅴ入口 | 欧美在线观看一区二区 | 亚洲一区二区三区视频免费观看 | 91久久精品一区二区二区 | 精品国产一区二区在线 | 天天看天天操 | 正在播放国产精品 | 日韩欧美第一页 | 欧美一区二不卡视频 | 日韩欧美国产不卡 | 久久黄色精品视频 | 国产精品视频一区二区三区四蜜臂 | 亚洲久久久 | 亚洲精品日韩在线 | av中文字幕在线观看 | 亚洲国产成人精品女人久久久野战 |