首页 > 其他分享 >Vue3 Hooks 的基础用法

Vue3 Hooks 的基础用法

时间:2023-04-26 19:31:58浏览次数:30  
标签:count Vue Hooks setup Watch 用法 increment Vue3

前言

Vue 3 在 API 设计上引入了类似于 React Hooks 的 Composition API,可以更方便地实现逻辑的复用和组合。本文将介绍 Vue 3 Hooks 的基础用法。

基本使用

Vue 3 Hooks 中最简单的 Hook 就是 setup。它是一个在组件创建时执行的函数,可以访问组件实例中的属性和方法,同时可以返回一个包含响应式数据、计算属性、事件处理函数等的对象。

export default {
  setup() {
    const count = ref(0)

    const increment = () => {
      count.value++
    }

    return {
      count,
      increment,
    }
  },
}

这个例子中,我们使用了 ref 来定义一个响应式变量 count,然后定义了一个增加 count 值的方法 increment。最后在 setup 函数中返回了一个包含 count 和 increment 的对象。

在模板中,我们可以直接使用 count 和 increment:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">+1</button>
  </div>
</template>

注意到我们并没有显式地声明 count 和 increment,而是直接在模板中使用它们。这是因为 setup 函数会自动将其返回的对象与模板中的数据和方法进行关联。

生命周期钩子

在 Vue 2 中,生命周期钩子是组件实例的方法。在 Vue 3 中,我们可以使用 Hooks 来实现同样的功能。下面是一个简单的例子:

export default {
  setup() {
    onMounted(() => {
      console.log('mounted')
    })

    return {}
  },
}

onMounted 是一个 Hook,它会在组件挂载时执行。我们在这里打印了一条日志。

类似地,Vue 3 还提供了其他生命周期 Hook,包括 onBeforeMount、onUpdated、onBeforeUpdate、onUnmounted 等等,用法与 onMounted 相似。

Watch

Vue 3 中也提供了对于响应式对象的 Watch 功能。与 Vue 2 的 Watch 不同,Vue 3 的 Watch 需要使用 watchEffect 来捕获响应式变量的变化。

export default {
  setup() {
    const count = ref(0)

    watchEffect(() => {
      console.log(`count: ${count.value}`)
    })

    return {
      count,
    }
  },
}

这个例子中我们使用了 watchEffect 来监测 count 的变化,并在控制台输出变量值。注意到我们并没有显式地使用 watch 函数来监听 count,而是直接使用了 watchEffect。这是因为 watchEffect 会自动检测函数内部使用的响应式变量,当变量发生变化时就会执行函数。

总结

Vue 3 Hooks 的引入大大简化了组件的逻辑复用和组合,可以更方便地管理状态、生命周期和 Watch 等。本文介绍了 Vue 3 Hooks 的基础用法,包括 setup、生命周期 Hook 和 Watch。掌握这些内容可帮助你更好地使用 Vue 3 Hooks 来构建前端应用。

标签:count,Vue,Hooks,setup,Watch,用法,increment,Vue3
From: https://blog.51cto.com/u_15718546/6228679

相关文章

  • while循环逻辑控制器+配置元件计数器的用法
    一、在线程组下添加逻辑控制器WhileController二、在逻辑控制器WhileController下添加Sample,BeanShellSampler,三、逻辑控制器WhileController下添加配置元件,计数器四、在线程组下添加监听器,察看结果树:注意while中设置的是${__javaScript("${number}"<"4")},而请求出......
  • python open 用法
    函数语法open(file,mode,buffering,encoding,errors,newline,closefd,opener)参数说明:name:一个包含了你要访问的文件名称的字符串值。mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读......
  • vue3 uniapp Uncaught (in promise) TypeError: Cannot read properties of null (rea
    引发这个问题是在三级页面中使用uni.navigateBack({delta:2})返回到一级页面再重一级页面进入二级页面二级页面中引用的组件引发的emitsOptions报错//原因:我在二级页面中的组件使用ts的emit写法引发的报错constemit=defineEmits<{(e:'confirm',contents:string):......
  • 对count distinct的用法
    平均活跃天数和月活人数_牛客题霸_牛客网(nowcoder.com)在牛客做这道题时看到了这样的写法。count(distinctuid,date_format(submit_time,"%Y%m%d") 不禁疑惑count里面可以跟两个参数吗。其实不是的,还是只有一个参数。这里面的distinct先起作用.例如:select d......
  • vue3中useRouter和useRoute的使用
    vue3路由新玩法useRoute和useRouter详解原文链接原来的vue2路由是通过this.$route和this.$router来控制的。现在vue3有所变化,useRoute相当于以前的this.$route,而useRouter相当于this.$router一、useRouter手动控制路由变化import{useRouter}from'vue-router'exportdef......
  • Vue3 + element-plus使用注意
    1.给组件设置ref="xxx"例如:<el-tableref="tableRef"定义tableRef时,需要注意尽量使用ref()而非ref(null)consttableRef=ref();因为使用ref(null)会得不到$el的相关属性,即undefined例如:表格自适应高度consttableRef=ref();constsetTableHeight=()=>......
  • vue3+vite自适应PC端
    1、下载包pnpmaddlib-flexible-computerpostcss-px2rempx2rem-loader-D2、在main.ts里引入import"lib-flexible-computer";3、在vite.config.ts写入importpx2remfrom"postcss-px2rem"css:{postcss:{plugins:[px2rem({......
  • Vue3中slot插槽使用方式
    **********************************Vue3中slot插槽使用方式****************************************************参考:https://huaweicloud.csdn.net/638eab83dacf622b8df8d08c.html<templatev-slot:isFang></template>简写v-slot:isFang#isFang<template#isFan......
  • Vue3---error xx should be on a new line
    ESLint:':render-header'shouldbeonanewline.(vue/max-attributes-per-line)此问题是由于.eslintrc.js文件中的vue/max-attributes-per-line配置错误产生的"vue/max-attributes-per-line":['error',{"singleline":10,......
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios构建项目
    最后是完整的vite.config.ts、main.ts配置1、先用vite创建一个项目npmcreatevite@latest2、安装elementplusyarnaddelement-plus@element-plus/icons-vuevite.config.ts配置组件按需导入,图标自动导入npminstall-Dunplugin-vue-componentsunplugin-auto-impor......