高级组件的数据传递为什么要写成{...props} ?
来源:4-9 【高阶组件HOC】withAddToCart()

Rukia酱00
2021-07-29
如图这两个返回对象不都是Object么?为什么,要使用展开运算符…pros传递数据?难道是为了向对象添加属性addToCart么?
写回答
1回答
-
JavaScript中三个点叫做“展开操作符”,他的作用就是简化传递数据的操作。
我们可以想象一下,如果你有一个组件需要输入 N 个 properties。 如果properties的数量不断增加,那么我们的传递数据的代码将会非常难看。
<Component x={} y={} z={} />
所以,为了避免组件属性传递出现冗长,React的语法糖允许我们使用展开操作符来添加对象参数
var props = { x: 1, y: 1, z:1 }; <Component {...props} />
以上的代码在react中有一个专有名词叫做unpack,拆包,react会自动帮你映射并且适配相对应的对象。在组件中, 我们通常 this.props.x 来使用拆包后的props
以上操作适用于所有react组件,并不局限于高阶组件
012021-08-03
相似问题