前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >vue3组合式api

vue3组合式api

作者头像
阿超
发布2022-08-21 14:42:19
发布2022-08-21 14:42:19
30000
代码可运行
举报
文章被收录于专栏:快乐阿超快乐阿超
运行总次数:0
代码可运行

这个思想上有点类似流程控制框架,将一个组件中的多个关注点分离、抽取,然后能进一步复用、编排

官方文档:https://v3.cn.vuejs.org/guide/composition-api-introduction.html#介绍

使用上来讲,就是编写的api方式变了,举个例子:

下面是我实际写的一个小组件

代码语言:javascript
代码运行次数:0
运行
复制
<script lang="tsx">
interface Props {
  msg: string;
  msgModifiers: {
    [key: string]: boolean;
  };
}
import { computed, onMounted, ref, Ref, toRefs, watch, } from 'vue'
export default {
  props: {
    msg: {
      type: String
    }
  },
  // 新的 setup 选项在组件被创建之前执行,一旦 props 被解析完成,它就将被作为组合式 API 的入口。
  setup(props: Props, { expose, emit }) {
    // ref 接收参数并将其包裹在一个带有 value property 的对象中返回,然后可以使用该 property 访问或更改响应式变量的值:
    const count: Ref<number> = ref(0)
	// 使用 `toRefs` 创建对 `props` 中的 `msg` property 的响应式引用
    const { msg } = toRefs(props)
    // 定义方法
    const increment = (event: MouseEvent) => ++count.value
    // 生命周期mounted
    onMounted(() => {
      console.log('mounted', { count })
    })
    // 监听
    watch(count, (newValue) => {
      if (count.value > 10) {
        count.value = 0
      }
      console.log('count changed', { newValue })
    })
    // 计算
    const twiceTheCounter = computed(() => count.value * 2)
    // 暴露方法,其中定义的 property 将可以被外部组件实例访问
    expose({
      increment
    })
    // setup 还可以返回一个渲染函数,该函数可以直接使用在同一作用域中声明的响应式状态:
    return () => (
      <div>
        <div>{msg.value}</div>
        <p>You clicked {count.value} times</p>
        <p>{twiceTheCounter.value}</p>
        <button onClick={increment}>Click me</button>
      </div>
    )
  }
}
</script>

<style scoped>
a {
  color: #42b983;
}
</style>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档