跳到主要内容

Props 声明

显式声明它所接受的 props,这样 Vue 才能知道外部传入的哪些是 props,哪些是透传 attribute(最常见的 class、style 和 id。)。

在 react 里都是参数;

<script setup>
const props = defineProps(["foo"]); // 类似react的props,但不能多次 defineProps
console.log(props.foo);
</script>

响应式 Props 解构

const { foo } = defineProps(["foo"]);

在 3.4 及以上版本才开始支持,这块设计不如 react;有点打补丁感觉;

Prop 名字格式

我们通常强制会将其写为 kebab-case 形式,以下静态和动态传参数方式:

<MyComponent greeting-message="hello" :is-published="false" v-bind="post" />

这块不如 react 灵活;

单向数据流

当对象或数组作为 props 被传入时,虽然子组件无法更改 props 绑定,但仍然可以更改对象或数组内部的值。这是因为 JavaScript 的对象和数组是按引用传递,对 Vue 来说,阻止这种更改需要付出的代价异常昂贵。

Prop 校验

内置的,(这 TS?)

参考链接

https://cn.vuejs.org/guide/components/props.html