vue 3將組件內(nèi)的參數(shù)處理提升到了一個(gè)全新的水平。在vue3中,你可以很容易地將不同類型的參數(shù)傳遞給組件,并讓它們自己處理這些參數(shù)。這為組件的復(fù)用和開(kāi)發(fā)帶來(lái)了更大的靈活性。
在vue 3中,組件內(nèi)部的參數(shù)處理通過(guò)setup函數(shù)實(shí)現(xiàn)。Setup函數(shù)接收兩個(gè)參數(shù)——props和context,props用于接收父組件傳遞的參數(shù),而context則用于與其他上下文相關(guān)的功能。
setup(props, context) { // 處理props參數(shù) const { title, message, show } = props // 使用context提供的emit函數(shù)向外部發(fā)送事件 context.emit('nameChanged', 'John Doe') // 其他代碼 }
在這個(gè)例子中,我們從props對(duì)象中解構(gòu)了三個(gè)參數(shù):title、message和show。然后我們使用context對(duì)象的emit函數(shù)向外部發(fā)送了一個(gè)事件。注意到我們并沒(méi)有在組件中定義這個(gè)事件,這是因?yàn)閑mit函數(shù)在vue3中是一個(gè)全局的函數(shù),可以使用它向任意地方發(fā)送事件。
在vue 3中,你還可以使用markRaw函數(shù)規(guī)定一個(gè)對(duì)象為“純粹”的。這個(gè)對(duì)象的值不會(huì)在響應(yīng)式系統(tǒng)中追蹤,這樣可以提高性能。
const props = markRaw({ title: '', message: '', show: false, })
在這個(gè)例子中,我們使用markRaw函數(shù)定義了一個(gè)props對(duì)象,告訴vue不要追蹤這個(gè)對(duì)象的值。這樣就可以減少系統(tǒng)的重新渲染次數(shù),提高性能。