目錄
 hello world
首頁 web前端 Vue.js Vue.js中使用無狀態元件的方法介紹

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

Sep 30, 2020 pm 05:48 PM
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 id="nbsp-hello-nbsp-world"> hello world</h1>
  </div>
</template>
登入後複製

你可以像這樣指定腳本的屬性:

export default {
  functional: true,
  render(createElement) {
    return createElement(
      "button", &#39;Click me&#39;
    );
  }
};
登入後複製

為什麼功能元件很重要?

功能元件可以快速執行,因為它們沒有狀態,並且在資料值發生變更時,不會經歷相同的初始化和重新呈現過程。

大多數情況下,功能元件對於表示或顯示循環項目非常有用。

示範

在這個介紹性的示範中,您將看到帶有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: &#39;Test&#39;,
  props: {
    brands: Array
  }
}
</script>
登入後複製

腳本和範本中的功能指示器顯示這是一個功能元件。請注意,仍然可以傳遞道具——它們是在功能組件中可以傳遞的惟一資料值。

暫時的資料道具持有也可以循環通過。

開啟您的app.vue文件,將下面的程式碼區塊複製到其中:

<template>
  <div id="app">
    <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  alt="Vue logo" >
    <Test 
     :brands ="[&#39;Tesla&#39;, &#39;Bentley&#39;, &#39;Ferrari&#39;, &#39;Ford&#39;]">
    </Test>
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test
  }
}
</script>
<style>
#app {
  font-family: &#39;Avenir&#39;, 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 src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  alt="Vue logo" >
    <Test 
     :brands ="[&#39;Tesla&#39;, &#39;Bentley&#39;, &#39;Ferrari&#39;, &#39;Ford&#39;]">
    </Test>
    <Example>
     Find More Cars
    </Example>
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
import Example from &#39;./Example&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test, Example
  }
}
</script>
<style>
#app {
  font-family: &#39;Avenir&#39;, 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(查找更多汽车)子节点现在是按钮的文本。示例组件在检查时显示为功能组件。

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

添加点击事件

您可以在组件上添加单击事件,并在根组件中包含该方法。但是,您需要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/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  alt="Vue logo" >
    <Test 
     :brands ="[&#39;Tesla&#39;, &#39;Bentley&#39;, &#39;Ferrari&#39;, &#39;Ford&#39;]">
    </Test>
    <Example @click="callingFunction">
     Find More Cars
    </Example>
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
import Example from &#39;./Example&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test, Example
  },
  methods: {
    callingFunction() {
      console.log("clicked");
    }
  }
}
</script>
登入後複製

除了上面的示例之外,您还可以在官方文档中列出的功能组件中使用其他参数。

结论

这个功能组件的初学者指南可以帮助您实现快速的表示,显示项目的循环,或者显示不需要状态的工作流的简单部分。

相关推荐:

2020年前端vue面试题大汇总(附答案)

vue教程推荐:2020最新的5个vue.js视频教程精选

更多编程相关知识,请访问:编程入门!!

以上是Vue.js中使用無狀態元件的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入探討vite是怎麼解析.env檔的 深入探討vite是怎麼解析.env檔的 Jan 24, 2023 am 05:30 AM

使用vue框架開發前端專案時,我們部署的時候都會部署多套環境,往往開發、測試以及線上環境呼叫的介面網域都是不一樣的。如何能做到區分呢?那就是使用環境變數和模式。

圖文詳解如何在Vue專案中整合Ace程式碼編輯器 圖文詳解如何在Vue專案中整合Ace程式碼編輯器 Apr 24, 2023 am 10:52 AM

Ace 是一個用 JavaScript 寫的可嵌入程式碼編輯器。它與 Sublime、Vim 和 TextMate 等原生編輯器的功能和效能相符。它可以很容易地嵌入到任何網頁和 JavaScript 應用程式中。 Ace 被維護為Cloud9 IDE的主要編輯器 ,並且是 Mozilla Skywriter (Bespin) 專案的繼承者。

vue中組件化和模組化有什麼區別 vue中組件化和模組化有什麼區別 Dec 15, 2022 pm 12:54 PM

組件化和模組化的區別:模組化是從程式碼邏輯的角度進行劃分的;方便程式碼分層開發,確保每個每個功能模組的職能一致。元件化是從UI介面的角度進行規劃;前端的元件化,方便UI元件的重複使用。

探討如何在Vue3中撰寫單元測試 探討如何在Vue3中撰寫單元測試 Apr 25, 2023 pm 07:41 PM

在當今前端開發中,Vue.js 已經成為了一個非常流行的框架。隨著 Vue.js 的不斷發展,單元測試變得越來越重要。今天,我們將探討如何在 Vue.js 3 中編寫單元測試,並提供一些最佳實踐和常見的問題及解決方案。

Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Mar 23, 2023 pm 07:53 PM

在Vue.js中,開發人員可以使用兩種不同的語法來建立使用者介面:JSX語法和範本語法。這兩種文法各有優劣,以下就來探討它們的差異和優劣勢。

怎麼查詢目前vue的版本 怎麼查詢目前vue的版本 Dec 19, 2022 pm 04:55 PM

查詢目前vue版本的兩種方法:1、在cmd控制台內,執行「npm list vue」指令查詢版本,輸出結果就是vue的版本號資訊;2、在專案中找到並開啟package.json文件,查找「dependencies」項目即可看到vue的版本資訊。

深入聊聊vue3中的reactive() 深入聊聊vue3中的reactive() Jan 06, 2023 pm 09:21 PM

前言:在vue3的開發中,reactive是提供實現響應式資料的方法。日常開發這個是使用頻率很高的api。這篇文章筆者就來探索其內部運作機制。

淺析vue怎麼實現檔案切片上傳 淺析vue怎麼實現檔案切片上傳 Mar 24, 2023 pm 07:40 PM

在實際開發專案過程中有時候需要上傳比較大的文件,然後呢,上傳的時候相對來說就會慢一些,so,後台可能會要求前端進行文件切片上傳,很簡單哈,就是把比如說1個G的檔案流切割成若干個小的檔案流,然後分別請求介面傳遞這個小的檔案流。

See all articles