在JSX中传播具有相同属性的多个道具
给定两个 props 对象:
const p1 = {
id: "p1"
//...
}
const p2 = {
id: "p2"
//...
}
如果将它们分布在同一个组件上,例如:
<MyComponent {...p1} {...p2}/>
React 如何确定id要使用的属性值?
也可以考虑其他情况,如
<MyComponent {...p1} id={"p3"} {...p2}/>
<MyComponent id={"p3"} {...p1} {...p2}/>
基本上,判断哪个属性值是它使用的值的背后规则是什么?
回答
按照它们出现的顺序,从左到右。它将遍历第一个传播,分配道具,然后通过第二个传播,覆盖任何重复项。
示范:
const Printout = (props: { x: number; y: number; z: number }) => {
useEffect(() => console.log(props), [props]);
return null;
};
const Demo = () => {
const a = { x: 1, y: 2, z: 3 };
const b = { y: 5, x: 6 };
return <Printout {...a} z={4} {...b} />;
};
控制台输出:
{"x": 6, "y": 5, "z": 4}
从对象中获取键的顺序是一个不同的问题。请参阅JavaScript 是否保证对象属性顺序?例如。