在本文中,您將了解功能元件,並了解如何在Vue中的工作流程中使用無狀態元件。 Vue應用程式狀態是一個確定元件行為的物件。 Vue應用程式狀態指示元件如何呈現或如何動態。
在你開始之前
你需要在你的電腦:
node.js 10.x以上版本都已安裝。透過在終端機/命令提示字元下執行以下命令,可以驗證是否具有此版本的node.js:
node -v
Visual Studio程式碼編輯器(或類似的程式碼編輯器)
在您的電腦上全域安裝Vue的最新版本
#在您的機器上安裝了Vue CLI 3.0
要做到這一點,首先卸載舊的CLI版本:
npm uninstall -g vue-cli
接下來,安裝一個新的:
npm install -g @vue/cli
在這裡下載一個Vue入門項目
解壓縮下載的項目
導航到解壓縮的文件,並運行命令,以保持所有的依賴關係最新:
npm install
引言:什麼是狀態和實例?
Vue應用程式狀態是一個確定組件行為的物件。 Vue應用程式狀態指示元件如何呈現或如何動態。
同時,vue實例是一個viewmodel,它包含一些選項,包括表示元素的模板、要裝入的元素、方法和初始化時的生命週期掛鉤。
Vue元件
js中的元件通常是被動式的:在vue.js中,資料物件可以有很多選項用於概念、計算屬性、方法和觀察程序。此外,資料物件會在資料值變更時重新呈現。
相反,功能元件不會保持狀態。
功能元件
從本質上講,函數元件是具有自己的元件的函數。功能組件沒有狀態或實例,因為它們不保存或追蹤狀態。此外,您不能在功能元件中存取構造。
功能元件是為了表示而創建的。 Vue.js中的功能元件與React.js中的類似。在Vue中,開發人員可以透過傳遞上下文輕鬆地使用功能元件直接建立整潔的元件。
語法功能元件
從官方文件來看,功能元件是這樣的:
Vue.component('my-component', { functional: true, // Props are optional props: { // ... }, // To compensate for the lack of an instance, // we are now provided a 2nd context argument. render: function (createElement, context) { // ... } })
建立功能元件
建立功能元件時要記住的一個關鍵準則是功能屬性。函數屬性在元件的模板部分或腳本部分中指定。範本部分語法如下所示:
<template functional> <div> <h1 id="nbsp-hello-nbsp-world"> hello world</h1> </div> </template>
你可以像這樣指定腳本的屬性:
export default { functional: true, render(createElement) { return createElement( "button", 'Click me' ); } };
為什麼功能元件很重要?
功能元件可以快速執行,因為它們沒有狀態,並且在資料值發生變更時,不會經歷相同的初始化和重新呈現過程。
大多數情況下,功能元件對於表示或顯示循環項目非常有用。
示範
在這個介紹性的示範中,您將看到帶有Vue範本的單頁元件類型示範和功能元件的呈現函數類型演示。
單頁功能元件
開啟test.vue
檔案並將下面的程式碼區塊複製到該檔案中:
<template functional> <div> <p v-for="brand in props.brands" :key="brand">{{brand}} </p> </div> </template> <script> export default { functional: true, name: 'Test', props: { brands: Array } } </script>
腳本和範本中的功能指示器顯示這是一個功能元件。請注意,仍然可以傳遞道具——它們是在功能組件中可以傳遞的惟一資料值。
暫時的資料道具持有也可以循環通過。
開啟您的app.vue
文件,將下面的程式碼區塊複製到其中:
<template> <div id="app"> <img src="/static/imghwm/default1.png" data-src="./assets/logo.png" class="lazy" alt="Vue logo" > <Test :brands ="['Tesla', 'Bentley', 'Ferrari', 'Ford']"> </Test> </div> </template> <script> import Test from './components/Test.vue' export default { name: 'app', components: { Test } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
這裡,您將看到props引用與冒號一起使用。
使用以下指令在dev伺服器中執行應用程式:
npm run serve
你的瀏覽器的結果應該是這樣的:
呈現函數方法
功能元件也可以包含呈現函數。
開發人員使用呈現函數來建立自己的虛擬DOM,而不使用Vue範本。
使用渲染函數在cars列表下建立一個新按鈕。在你的專案資料夾中建立一個名為example.js
的新文件,並將下面的程式碼區塊複製到文件中:
export default { functional: true, render(createElement, { children }) { return createElement("button", children); } };
這將在功能元件中建立一個呈現函數來顯示按鈕,並使用元素上的子節點作為按鈕文字。
開啟app.vue文件,將下面的程式碼區塊複製到文件中:
<template> <div id="app"> <img src="/static/imghwm/default1.png" data-src="./assets/logo.png" class="lazy" alt="Vue logo" > <Test :brands ="['Tesla', 'Bentley', 'Ferrari', 'Ford']"> </Test> <Example> Find More Cars </Example> </div> </template> <script> import Test from './components/Test.vue' import Example from './Example' export default { name: 'app', components: { Test, Example } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
如果再次运行该应用程序,您将看到find more cars(查找更多汽车)子节点现在是按钮的文本。示例组件在检查时显示为功能组件。
添加点击事件
您可以在组件上添加单击事件,并在根组件中包含该方法。但是,您需要render函数中的数据对象参数来访问它。
复制这个在你的example.js
文件:
export default { functional: true, render(createElement, { data, children }) { return createElement("button", data, children); } };
现在,将单击事件添加到根组件中,Vue将识别它。将以下内容复制到您的app.vue
文件:
<template> <div id="app"> <img src="/static/imghwm/default1.png" data-src="./assets/logo.png" class="lazy" alt="Vue logo" > <Test :brands ="['Tesla', 'Bentley', 'Ferrari', 'Ford']"> </Test> <Example @click="callingFunction"> Find More Cars </Example> </div> </template> <script> import Test from './components/Test.vue' import Example from './Example' export default { name: 'app', components: { Test, Example }, methods: { callingFunction() { console.log("clicked"); } } } </script>
除了上面的示例之外,您还可以在官方文档中列出的功能组件中使用其他参数。
结论
这个功能组件的初学者指南可以帮助您实现快速的表示,显示项目的循环,或者显示不需要状态的工作流的简单部分。
相关推荐:
更多编程相关知识,请访问:编程入门!!
以上是Vue.js中使用無狀態元件的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Netflix主要使用React作為前端框架,輔以Vue用於特定功能。 1)React的組件化和虛擬DOM提升了Netflix應用的性能和開發效率。 2)Vue在Netflix的內部工具和小型項目中應用,其靈活性和易用性是關鍵。

Vue.js是一種漸進式JavaScript框架,適用於構建複雜的用戶界面。 1)其核心概念包括響應式數據、組件化和虛擬DOM。 2)實際應用中,可以通過構建Todo應用和集成VueRouter來展示其功能。 3)調試時,建議使用VueDevtools和console.log。 4)性能優化可通過v-if/v-show、列表渲染優化和異步加載組件等實現。

Vue.js適合小型到中型項目,而React更適用於大型、複雜應用。 1.Vue.js的響應式系統通過依賴追踪自動更新DOM,易於管理數據變化。 2.React採用單向數據流,數據從父組件流向子組件,提供明確的數據流向和易於調試的結構。

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

實現 Vue 中 a 標籤跳轉的方法包括:HTML 模板中使用 a 標籤指定 href 屬性。使用 Vue 路由的 router-link 組件。使用 JavaScript 的 this.$router.push() 方法。可通過 query 參數傳遞參數,並在 router 選項中配置路由以進行動態跳轉。

Vue 中實現組件跳轉有以下方法:使用 router-link 和 <router-view> 組件進行超鏈接跳轉,指定 :to 屬性為目標路徑。直接使用 <router-view> 組件顯示當前路由渲染的組件。使用 router.push() 和 router.replace() 方法進行程序化導航,前者保存歷史記錄,後者替換當前路由不留記錄。

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),