Vue.js中使用无状态组件的方法介绍


本文摘自PHP中文网,作者青灯夜游,侵删。

在本文中,您将了解功能组件,并了解如何在Vue中的工作流中使用无状态组件。Vue应用程序状态是一个确定组件行为的对象。Vue应用程序状态指示组件如何呈现或如何动态。

在你开始之前

你需要在你的电脑:

node.js 10.x及以上版本已安装。通过在终端/命令提示符下运行以下命令,可以验证是否具有此版本的node.js:

1

node -v

  • Visual Studio代码编辑器(或类似的代码编辑器)

  • 在您的计算机上全局安装Vue的最新版本

  • 在您的机器上安装了Vue CLI 3.0

要做到这一点,首先卸载旧的CLI版本:

1

npm uninstall -g vue-cli

接下来,安装一个新的:

1

npm install -g @vue/cli

  • 在这里下载一个Vue入门项目

  • 解压下载的项目

  • 导航到解压缩的文件,并运行命令,以保持所有的依赖关系最新:

1

npm install

引言:什么是状态和实例?

Vue应用程序状态是一个确定组件行为的对象。Vue应用程序状态指示组件如何呈现或如何动态。

同时,vue实例是一个viewmodel,它包含一些选项,包括表示元素的模板、要装入的元素、方法和初始化时的生命周期挂钩。

Vue组件

js中的组件通常是被动的:在vue.js中,数据对象可以有很多选项用于概念、计算属性、方法和观察程序。此外,数据对象会在数据值更改时重新呈现。

相反,功能组件不保持状态。

功能组件

从本质上讲,函数组件是具有自己的组件的函数。功能组件没有状态或实例,因为它们不保存或跟踪状态。此外,您不能在功能组件中访问构造。

功能组件是为了表示而创建的。Vue.js中的功能组件与React.js中的类似。在Vue中,开发人员可以通过传递上下文轻松地使用功能组件直接构建整洁的组件。

语法功能组件

从官方文档来看,功能组件是这样的:

1

2

3

4

5

6

7

8

9

10

11

12

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) {

    // ...

  }

})

创建功能组件

创建功能组件时要记住的一个关键准则是功能属性。函数属性在组件的模板部分或脚本部分中指定。模板部分语法如下所示:

1

2

3

4

<template functional>

  <div> <h1> hello world</h1>

  </div>

</template>

你可以像这样指定脚本的属性:

1

2

3

4

5

6

7

8

export default {

  functional: true,

  render(createElement) {

    return createElement(

      "button", 'Click me'

    );

  }

};

为什么功能组件很重要?

功能组件可以快速执行,因为它们没有状态,并且在数据值发生更改时,不会经历相同的初始化和重新呈现过程。

大多数情况下,功能组件对于表示或显示循环项非常有用。

演示

在这个介绍性的演示中,您将看到带有Vue模板的单页面组件类型演示和功能组件的呈现函数类型演示。

单页功能组件

打开test.vue文件并将下面的代码块复制到该文件中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<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文件,将下面的代码块复制到其中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<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引用与冒号一起使用。

阅读剩余部分

相关阅读 >>

vue.js为什么不能支持ie8?

vue.js方法与事件的介绍

vue.js如何引用vue router

vue 手势组件教程

vue.js中v-for列表渲染指令的使用(代码示例)

什么是vue.js插件

vue.js的优势是什么

vue.js和bootstrap之间有什么区别?

vue.js中的el什么意思

vue.js是否支持ie8

更多相关阅读请进入《vue.js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...