defineProps 与 toRefs用法
defineProps
和 toRefs
是 Vue 3 Composition API 中的两个函数。
- defineProps:在 Vue 3 的早期版本中存在,它用于在 setup 函数内部定义并获取 props。但是,在我知识库的最后更新(2021年9月1日)时,这个函数已经被移除,取而代之的是将
props
作为setup
函数的第一个参数。
export default {
props: {
title: String,
},
setup(props) {
console.log(props.title); // 你可以直接使用 props
},
};
- toRefs:当你使用 Vue 的响应式函数
reactive
创建了一个响应式对象,然后想要在模板或者其他地方解构使用这个对象时,你需要使用toRefs
来保持其响应性。
下面是一个简单的例子:
import { reactive, toRefs } from 'vue';
export default {
setup() {
let state = reactive({
count: 0,
message: 'Hello, Vue!'
});
return { ...toRefs(state) };
},
};
在这个示例中,state
是一个响应式对象,toRefs
是用来将响应式对象转化为普通对象,但每个属性仍然是响应式的,这使得我们可以直接在模板中解构和使用它们,同时保持其响应性。
如果你不使用 toRefs
,而是直接解构(如 return { ...state }
),那么在模板或其他地方使用解构出来的变量时,会丢失其响应性。