props在开发中使用总结

54 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

props

一个组件需要显式声明它所接受的 props,这样 Vue 才能知道外部传入的哪些是 props。

注意:

所有 prop 默认都是可选的,除非声明了 required: true;

除 Boolean 外的未传递的可选 prop 将会有一个默认值 undefined;

Boolean 类型的未传递 prop 将被转换为 false。你应该为它设置一个 default 值来确保行为符合预期;

如果声明了 default 值,那么在 prop 的值被解析为 undefined 时,无论 prop 是未被传递还是显式指明的 undefined,都会改为 default 值;

一个 prop 可以声明其类型,允许多种类型。

image.png

尽可能避免更改对象 / 数组类型的 props

所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况,不然应用的数据流将很容易变得混乱而难以理解。

image.png

如何满足修改prop的需求?

导致你想要更改一个 prop 的需求通常来源于以下两种场景:

prop 被用于传入初始值;而子组件想在之后将其作为一个局部数据属性。在这种情况下,最好是新定义一个局部数据属性,从 props 上获取初始值即可:

image.png

image.png

需要对传入的 prop 值做进一步的转换。在这种情况中,最好是基于该 prop 值定义一个计算属性:

image.png