写点什么

Vue3 使用小技巧

作者:青柚1943
  • 2023-08-30
    湖南
  • 本文字数:894 字

    阅读完需:约 3 分钟

1 响应式解构属性

在 Vue 中,Props  是父子组件之间传递数据的强大方式。Prop 数据是响应性的,这意味着在父组件中对道具值的更改将反映在接收 Prop 的子组件中。然而,子组件不能直接修改 Prop 的值。相反,它应该发出一个事件来通知父组件更新 Prop。

在解构 Vue 的 props 时,prop 数据在过程中会失去反应性。然而,有一种方法可以在解构 props 时保持反应性。你可以使用 toRefs 指令来包装 props 对象,并在解构过程中保持反应性。有了这个指令,你可以在不担心失去反应性的情况下解构 prop 数据。


<script setup lang="ts">import { toRefs } from 'vue'
const props = withDefaults( defineProps<{ event: object; address: string; }>(), {});
const { address } = toRefs(props)</script>
<template> <div> {{ address }} </div></template>
复制代码


2 从组件外部调用方法

在 Vue 中,我们可以借助 defineExpose 宏从特定组件外部调用方法。这在处理某种方式上相互依赖的多个组件时特别有用。

defineExpose 宏可以暴露出组件属性,这些属性可以在其他组件中通过refs进行访问,从而允许你在特定组件中调用方法。这也可以让你访问变量声明,props 等等。

<script setup lang="ts">  function doSomething(){    // do smething  }  defineExpose({ doSomething });</script>
<div> <h1>Child component</h1> </div>
复制代码

现在我们可以在任何地方导入该组件,并按照下面的示例调用其中的各种方法。

<script setup lang="ts">import { ref, onMounted} from 'vue';import ChildComponent from './ChildComponent';const childComponent = ref();
onMounted(() => { childComponent.value.doSomething();});</script>
<div id="app"> <ChildComponent ref="childComponent" /></div>
复制代码

3 TODO

<script lang="ts" setup>import {provide } from 'vue';
provide('contractForm', contractInfo);
</script>
复制代码


<script lang="ts" setup>import { ref, reactive, inject, watch, onMounted, onActivated } from 'vue';
const contractInfo = inject('contractForm') as TypeContractInfo;
</script>
复制代码


用户头像

青柚1943

关注

生命不息,代码不止。 2020-08-04 加入

老街坊,小弄堂,是属于那年代白墙黑瓦的淡淡的忧伤。

评论

发布
暂无评论
Vue3使用小技巧_青柚1943_InfoQ写作社区