前端核心知识:Vue 3 编程的 10 个实用本领
https://i-blog.csdnimg.cn/direct/1052064b5d0c416189cdbc06596cb1fc.pnghttps://i-blog.csdnimg.cn/direct/4a5ab68b785545469cf67d0225eaeac0.png
1. 使用 ref 和 reactive 管理响应式数据
https://i-blog.csdnimg.cn/direct/f67a19d0bb7542b6ad21a0e3b1cbb3f4.png
原理剖析
Vue 3 引入了 ref 和 reactive 两个核心 API 来管理响应式数据:
[*]ref:用于创建根本类型(如字符串、数字)的响应式数据,返回一个包含 value 属性的对象。
[*]reactive:用于创建复杂对象或数组的响应式数据,返回一个代理对象。
代码示例
import { ref, reactive } from 'vue';
// 使用 ref 管理基本类型数据
const count = ref(0);
console.log(count.value); // 0
// 使用 reactive 管理复杂对象
const state = reactive({
name: 'Vue 3',
version: '3.2.0',
});
console.log(state.name); // Vue 3
注意事项
[*]使用 ref 时,必要通过 .value 访问或修改数据。
[*]reactive 只能用于对象或数组,不能用于根本类型。
2. 组合式 API(Composition API)
https://i-blog.csdnimg.cn/direct/753bbf844e8c48daaa703a09aa6e0197.png
原理剖析
组合式 API 是 Vue 3 的核心特性之一,它允许开辟者将逻辑代码构造成可复用的函数,而不是依赖于选项式 API(如 data、methods 等)。通过 setup 函数,开辟者可以更机动地管理组件的状态和逻辑。
代码示例
import { ref, computed } from 'vue';
export default {
setup() {
const count = ref(0);
const doubleCount = computed(() => count.value * 2);
function increment() {
count.value++;
}
return {
count,
doubleCount,
increment,
};
},
};
优势
[*]逻辑复用性更强。
[*]代码构造更清晰,尤其是复杂组件。
3. 使用 watch 和 watchEffect 监听数据变化
https://i-blog.csdnimg.cn/direct/da28c1f1455c41e7a4266be8b1242feb.png
原理剖析
[*]watch:用于监听特定响应式数据的变化,支持深度监听和懒实行。
[*]watchEffect:自动追踪其依赖的响应式数据,并在依赖变化时立即实行。
代码示例
import { ref, watch, watchEffect } from 'vue';
const count = ref(0);
// 使用 watch 监听 count 的变化
watch(count, (newValue, oldValue) => {
console.log(`count changed from ${oldValue} to ${newValue}`);
});
// 使用 watchEffect 自动追踪依赖
watchEffect(() => {
console.log(`count is now ${count.value}`);
});
注意事项
[*]watch 更得当精确控制监听逻辑。
[*]watchEffect 得当不必要明白指定依赖的场景。
4. 使用 provide 和 inject 实现跨组件通讯
原理剖析
provide 和 inject 是 Vue 3 中实现跨组件通讯的 API,特别得当在深层嵌套组件中转达数据。
代码示例
// 父组件
import { provide, ref } from 'vue';
export default {
setup() {
const message = ref('Hello from parent');
provide('message', message);
},
};
// 子组件
import { inject } from 'vue';
export default {
setup() {
const message = inject('message');
return { message };
},
};
优势
[*]避免逐层转达 props 的繁琐。
[*]得当全局状态管理(如主题、用户信息等)。
https://i-blog.csdnimg.cn/direct/bc25fb58f5394077bfbd2b4b763a2be2.png
5. 使用 Teleport 实现组件挂载到恣意位置
原理剖析
Teleport 是 Vue 3 新增的特性,允许将组件的内容渲染到 DOM 中的恣意位置,常用于模态框、关照等场景。
代码示例
<template>
<button @click="showModal = true">Open Modal</button>
<Teleport to="body">
<div v-if="showModal" class="modal">
<p>This is a modal!</p>
<button @click="showModal = false">Close</button>
</div>
</Teleport>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const showModal = ref(false);
return { showModal };
},
};
</script>
优势
[*]办理组件层级和样式隔离问题。
[*]提升用户体验。
6. 使用 Suspense 处理异步组件加载
原理剖析
Suspense 是 Vue 3 中用于处理异步组件加载的特性,可以在组件加载完成前显示占位内容。
代码示例
<template>
<Suspense>
<template #default>
<AsyncComponent />
</template>
<template #fallback>
<div>Loading...</div>
</template>
</Suspense>
</template>
<script>
import { defineAsyncComponent } from 'vue';
const AsyncComponent = defineAsyncComponent(() =>
import('./AsyncComponent.vue')
);
export default {
components: {
AsyncComponent,
},
};
</script>
优势
[*]提升用户体验,避免页面空缺。
[*]简化异步组件加载逻辑。
https://i-blog.csdnimg.cn/direct/b140d2867c1e4a69b96095e8b1cc2b2d.png
7. 使用 v-model 实现双向绑定
原理剖析
Vue 3 对 v-model 进行了改进,支持多个 v-model 绑定,并可以通过 modelValue 和 update:modelValue 自界说绑定逻辑。
代码示例
<template>
<CustomInput v-model:firstName="firstName" v-model:lastName="lastName" />
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const firstName = ref('John');
const lastName = ref('Doe');
return { firstName, lastName };
},
};
</script>
自界说组件 CustomInput
<template>
<input :value="firstName" @input="$emit('update:firstName', $event.target.value)" />
<input :value="lastName" @input="$emit('update:lastName', $event.target.value)" />
</template>
<script>
export default {
props: ['firstName', 'lastName'],
};
</script>
优势
[*]支持多个 v-model 绑定。
[*]更机动的双向绑定实现。
8. 使用 defineComponent 加强 TypeScript 支持
https://i-blog.csdnimg.cn/direct/b9dde3d5fc194205bfb4d8eeb725270a.png
原理剖析
defineComponent 是 Vue 3 中用于加强 TypeScript 支持的 API,可以提供更好的类型推断和代码提示。
代码示例
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const count = ref(0);
return { count };
},
});
优势
[*]提升 TypeScript 开辟体验。
[*]更好的类型安全和代码提示。
9. 使用 Fragment 减少不必要的 DOM 元素
原理剖析
Vue 3 支持多根节点组件(Fragment),可以减少不必要的 DOM 元素,提升渲染性能。
代码示例
<template>
<header>Header</header>
<main>Main Content</main>
<footer>Footer</footer>
</template>
优势
[*]减少不必要的 DOM 层级。
[*]提升渲染性能。
10. 使用 Custom Directives 自界说指令
https://i-blog.csdnimg.cn/direct/be66ae31e5484198990fc9d1f2e2fea5.png
原理剖析
Vue 3 允许开辟者自界说指令,用于直接操作 DOM 元素。
代码示例
import { directive } from 'vue';
const vFocus = {
mounted(el) {
el.focus();
},
};
export default {
directives: {
focus: vFocus,
},
};
使用示例
<input v-focus />
优势
[*]提供更机动的 DOM 操作能力。
[*]得当实现特定功能(如自动聚焦、拖拽等)。
总结
本文详细介绍了 Vue 3 编程中的 10 个实用本领,涵盖了响应式数据管理、组合式 API、跨组件通讯、异步组件加载等多个方面。通过掌握这些本领,开辟者可以更高效地构建现代化的 Vue 应用,提升代码质量和开辟体验。希望本文能为您的 Vue 3 开辟之旅提供资助!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]