站長資訊網
        最全最豐富的資訊網站

        Vue.js中使用無狀態組件的方法介紹

        Vue.js中使用無狀態組件的方法介紹

        在本文中,您將了解功能組件,并了解如何在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> 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 alt="Vue logo" src="./assets/logo.png">     <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

        你的瀏覽器的結果應該是這樣的:

        Vue.js中使用無狀態組件的方法介紹

        呈現函數方法

        功能組件也可以包含呈現函數。

        開發人員使用呈現函數來創建他們自己的虛擬DOM,而不使用Vue模板。

        使用渲染函數在cars列表下創建一個新按鈕。在你的項目文件夾中創建一個名為example.js的新文件,并將下面的代碼塊復制到文件中:

        export default {     functional: true,     render(createElement, { children }) {       return createElement("button", children);     }   };

        這將在功能組件中創建一個呈現函數來顯示按鈕,并使用元素上的子節點作為按鈕文本。

        打開app.vue文件,將下面的代碼塊復制到文件中:

        <template>   <div id="app">     <img alt="Vue logo" src="./assets/logo.png">     <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(查找

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品tv久久久久久久久| 国产成人精品免费视频网页大全| 无码人妻精品一区二区| mm1313亚洲国产精品无码试看| 精品福利一区二区三区免费视频| 久久久久久国产精品美女| 久久精品国产99国产电影网 | 亚洲AV日韩精品一区二区三区| 欧美日韩精品一区二区| 国99精品无码一区二区三区| 亚洲AV永久无码精品水牛影视| 久久精品女人天堂AV麻| 国产成人精品一区在线| 九九精品成人免费国产片| 国产精品内射后入合集| 最新国产精品拍自在线播放| 国自产精品手机在线观看视频 | 91精品一区二区综合在线| 国产成人久久精品区一区二区| 无码精品黑人一区二区三区| 亚洲精品国产精品乱码不卡| 久久精品一区二区三区中文字幕| 91国内揄拍国内精品对白不卡| 国产精品一二二区| 99re6在线精品免费观看| 国内精品久久久久久久97牛牛 | 国产欧美日本亚洲精品一5| 91精品国产福利在线观看麻豆| 国产日韩欧美精品| 国产高清在线精品一区| 99久久99久久久精品齐齐| 97久久久精品综合88久久| 国产精品内射后入合集| 91精品国产福利尤物| 国产91久久精品一区二区| 欧美日韩精品一区二区在线播放 | 国产成人精品久久| 国产精品无码一区二区在线观一| 国产精品内射久久久久欢欢| 国产在线精品一区二区不卡麻豆| 精品无码国产自产拍在线观看蜜 |