术语 · 前端

组件属性

Props

父组件传给子组件的数据,用来配置组件的内容和行为。

同一份定义,传入什么就长成什么

Button.def

label待传入

variant待传入

样子交给 props 决定
label="加入购物车"加入购物车
label="取消" ghost取消
label="删除" dark删除
同一份定义,三种样子
组件定义不动,父组件传入不同的属性,就得到不同的按钮。

换个角度想

Props 像咖啡店的点单小票:同一台咖啡机,小票上写大杯、少糖、加冰,做出来的就是那一杯。机器不用改,改的只是单子。

同一个按钮,怎么被传成不同样子?

  1. label

    variant
    你扮演父组件:决定要传下去的值
  2. <Button label=… />

    像给函数传参数

  3. 子组件读到的 props(只读)

    label加入购物车

    variantsolid

  4. 加入购物车<Button label="加入购物车" variant="solid" />

父组件准备好数据

什么时候会遇到它

  1. 配置内容

    列表里每张卡片的标题、封面都不同,数据全来自 props。

  2. 控制形态

    同一个弹窗组件,传 confirm 或 alert,按钮组合就不一样。

  3. 排查显示

    组件显示不对时,先看父组件传进来的 props 对不对。

想一想

一个头像组件在页面 A 是圆形,页面 B 想要方形。应该复制一份组件改样式吗?

看答案

不用复制。给组件加一个 shape 属性(默认圆形),页面 B 传入方形即可——定义保持一份,差异交给 props 表达。

最容易踩的坑

Props 是自上而下的单行道:子组件只读它,不该偷偷修改它。想改数据,应该通知父组件去改,否则两边就说不清谁是真相了。

⌘K搜索知识库

最近收录

正在载入知识索引…