Vue 3 + Composition API 最佳实践
在Vue项目中,新人常犯的错误是逻辑分散在data、methods和computed中。使用Composition API可以将相关逻辑聚合在一起。
// 逻辑复用:使用 composable 函数
import { ref, onMounted } from 'vue';
export function useUserList() {
const users = ref([]);
const loading = ref(false);
const fetchUsers = async () => {
loading.value = true;
try {
const res = await api.getUsers();
users.value = res.data;
} catch (e) {
console.error('获取用户失败', e);
} finally {
loading.value = false;
}
};
onMounted(() => {
fetchUsers();
});
return { users, loading, fetchUsers };
}
关键点:将网络请求、状态管理封装在composable中,组件只负责渲染和调用,保持代码整洁。
React Hooks 状态管理
React中,新人常困惑于State和Props的使用。记住:能不用State就不用,尽量提升State到最近的共同父组件,或者使用Context/Zustand进行全局管理。
// 自定义 Hook:useFetch
import { useState, useEffect } from 'react';
function useFetch(url) {
const [data, setData] = useState(null);
const [error, setError] = useState(null);
useEffect(() => {
const controller = new AbortController();
fetch(url, { signal: controller.signal })
.then(res => res.json())
.then(data => setData(data))
.catch(err => setError(err))
.finally(() => setLoading(false));
return () => controller.abort(); // 清理副作用
}, [url]);
return { data, error };
}
关键点:注意useEffect的依赖数组,避免无限循环;使用AbortController清理未完成的请求。