关于vue3中setup函数的使用

 更新时间:2022年04月23日 09:18:02   作者:黑猫几绛  
这篇文章主要介绍了关于vue3中setup函数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

概述 

一、 初识setup函数 

组件中所用到的:数据、方法等等均要配置在setup中,这也就意味着在Vue2中写的data、methods在这里都不再推荐使用。

这样的配置让对象式编程趋近于了函数式编程。

<script>
export default {
  name: 'App',
  // 最为原始的对象写法是这样,但是通过es6我们可以简写
  // setup: function(){}
  setup () {
    // 数据
    let name = '黑猫几绛'
    let age = 20
    // 方法
    function sayHello() {
      console.log(`我叫${name},我今年${age}了`)
    }
  }
}
</script>

了解过Vue2响应式原理的话你可能会有疑问说,在这个地方name和age并不是响应式的。

的确如此,在这里我们仅仅是测试一下setup中是否可以放入数据与方法,响应式在后面的专栏文章中介绍。

如果此时未了解响应原理,可以看看我以前的一篇文章,这篇文章里有详细介绍

二、 关于setup的返回值

仅仅存放数据与方法还不够,我们需要将他们作为返回值返回出去,在模板中便可以直接使用。

<template>
  <h1>我叫{{name}},我今年{{age}}了</h1>
</template>
 
<script>
export default {
  name: 'App',
  // 最为原始的对象写法是这样,但是通过es6我们可以简写
  // setup: function(){}
  setup () {
    // 数据
    let name = '黑猫几绛'
    let age = 20
    // 方法
    function sayHello() {
      console.log(`我叫${name},我今年${age}了`)
    }
    return{
      name,
      age,
      sayHello
    }
  }
}
</script>

在概述里面还介绍了setup的另外一种返回值,即返回一个渲染函数,这个函数的方法有一点像React.creatElement,可以自定义渲染的内容。

<script>
import {h} from 'vue'
export default {
  name: 'App',
  setup () {
    // 在页面上渲染出一个h1标签
    return ()=> h('h1', '黑猫几绛')
  }
}
</script>

三、 关于setup的参数

# App.vue
<template>
  <Demo msg="hello" name="world" @hello="changeId">
    <template v-slot:test>
      摸鱼
    </template>
  </Demo>
</template>
# Demo.vue
<script>
export default {
    name:'Demo',
    props:['msg'],
    setup(props,context){
        console.log(props);
        console.log(context.attrs);
        console.log(context.slots);
        console.log(context.emit);
    }
}
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue中mixins的使用方法详解

    Vue中mixins的使用方法详解

    mixins是一种分发 Vue 组件中可复用功能的使用方式,它是一个 js 对象,包含我们组件script中的任意功能选项,下面就跟随小编一起来看看它的具体使用吧
    2024-03-03
  • vue todo-list组件发布到npm上的方法

    vue todo-list组件发布到npm上的方法

    这篇文章主要介绍了vue todo-list组件发布到npm上的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • vuex中数据持久化插件vuex-persistedstate使用详解

    vuex中数据持久化插件vuex-persistedstate使用详解

    这篇文章主要介绍了vuex中数据持久化插件vuex-persistedstate使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 如何使用crypto-js对文件上传下载进行加密处理

    如何使用crypto-js对文件上传下载进行加密处理

    这篇文章主要介绍了如何使用crypto-js对文件上传下载进行加密处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Vue中slot-scope的深入理解(适合初学者)

    Vue中slot-scope的深入理解(适合初学者)

    这篇文章主要给大家介绍了关于Vue中slot-scope的深入理解,这个教程非常适合初学者,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 基于VUE实现简单的学生信息管理系统

    基于VUE实现简单的学生信息管理系统

    这篇文章主要介绍了VUE实现一个简单的学生信息管理系统,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 详解使用jest对vue项目进行单元测试

    详解使用jest对vue项目进行单元测试

    这篇文章主要介绍了详解使用jest对vue项目进行单元测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • vue中,在本地缓存中读写数据的方法

    vue中,在本地缓存中读写数据的方法

    今天小编就为大家分享一篇vue中,在本地缓存中读写数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue draggable组件实现拖拽及点击无效问题的解决

    vue draggable组件实现拖拽及点击无效问题的解决

    这篇文章主要介绍了vue draggable组件实现拖拽及点击无效问题的解决,只需要在设置handle属性就可以了,.defaultTypeTag 是要拖拽的块的类名,要注意的是需要做点击事件的项不能包含在这个类名里面,不然会无法触发点击事件,详细解决办法跟随小编一起学习吧
    2022-05-05
  • Vue3中同时定义多个插槽的实现示例

    Vue3中同时定义多个插槽的实现示例

    本文主要介绍了Vue3中同时定义多个插槽的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12

最新评论