17.Composition API(三)高级语法补充

本文深入探讨Vue.js的Composition API,包括生命周期钩子的替代方法、Provide和inject的使用、代码组织练习、h函数的应用及在setup中的顶级写法,通过实例解析如何提升组件复用性和代码可维护性。
摘要由CSDN通过智能技术生成

1.生命周期钩子

setup可以用来代替methods、data、watch等这些选项,也可以替代生命周期钩子。

可以直接导入以on开头的函数注册生命周期钩子;

import {onUpdated,onBeforeUpdate} from "vue"

然后在setup中使用函数即可:

setup() {
			onUpdated(()=>{
				console.log("updated")
			})
		}

2.Provide和inject函数

provide给子组件提供数据,一般相邻的组件传递数据使用props,不相邻组件使用provide; inject子组件接受父组件传输过来的数据。

父组件:

<template>
	<div>
		<home></home>
		<button @click="increment">app+1</button>
	</div>
</template>

<script>
	// 导入provide函数
	import {provide,ref,readonly} from "vue";
	import Home from "./Home.vue";
	export default{
		components:{
			Home
		},
		setup() {
			const name =ref("phoebe");
			const counter = ref(100);
			// 将传输数据设置为readonly模式;子组件则不能修改数据
			provide("name",readonly(name));
			provide("counter",readonly(counter))
			// 响应式使counter+1
			const increment=()=>{
				counter.value++
			}
			return{
				increment
			}
		}
	}
</script>

子组件:

<template>
	<div>
		<h2>{
  {name}} {
  {counter}}</h2>
		<button @click="homeInrement">home +1</button>
	</div>
</template>

<script>
	import {inject} from "vue";
	export default{
		setup() {
			// inject 接受传入的数据
			const name = inject("name");
			const counter =inject("counter")
			// 一般情况不能在子组件中使父组件的数据更改,不符合数据的单向传输
			// 所以要在父组件中设置传输来的数据为只读模式
			const homeInrement = ()=>{counter.value++}
			return{
				name,
				counter,
				homeInrement
			}
		}
	}
</script>

在这里插入图片描述

3.代码练习

练习1:体会compositionAPI:
将功能模块的代码提取到hook中,方便后期管理和修改;

<template>
	<div>
		<h2>{
  {counter}}</h2>
		<h2>{
  {doubleCounter}}</h2>
		<button @click="increment">+1</button>
		<button @click
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值