Reactjs 反应';与道具值同名的道具
我们可以隐式地将道具传递给具有相同名称和值的组件吗 例如: 假设我有一个名为Reactjs 反应';与道具值同名的道具,reactjs,Reactjs,我们可以隐式地将道具传递给具有相同名称和值的组件吗 例如: 假设我有一个名为x的变量:const x=1; 我有一个组件,它有一个名为x的道具。我可以将此变量作为值隐式传递给它吗?像这样:?你不能,没有赋值的道具()是()的缩写(正如Ajay Varghese指出的) 传递相同的变量名将是 如果需要在JSX道具中直接传递多个值,可以使用 constdivprops={x:1,y:2}; ... 它通常用于将所有道具从家长传递给孩子 也可以通过在排列后指定道具来覆盖道具: <div {..
x
的变量:const x=1
;
我有一个组件,它有一个名为
x
的道具。我可以将此变量作为值隐式传递给它吗?像这样:
?你不能,没有赋值的道具(
)是(
)的缩写(正如Ajay Varghese指出的)
传递相同的变量名将是
如果需要在JSX道具中直接传递多个值,可以使用
constdivprops={x:1,y:2};
...
它通常用于将所有道具从家长传递给孩子
也可以通过在排列后指定道具来覆盖道具:
<div {...divProps} x=3 />
布尔值可以隐式地传递给组件,正如@Ajay在注释中指出的那样,如
<div x />
并使用扩展属性传递它们,如
<Comp {...cmpProps} />
阅读这些答案时,我有了一点顿悟。因为在ES6+中,您可以向如下对象添加现有变量:
const x = 42;
const obj = { x, y: 1337 };
console.log(obj); // result { x: 42, y: 1337 }
这意味着您可以将命名道具添加到React组件,如:
const x = 42;
const elm = <MyComponent {...{x}} />;
常数x=42;
常数elm=;
我也有ViggoV的方法。要澄清react道具中的解构并了解道具是文字对象:
let text=“Aloha”;
console.log(文本)//“阿罗哈”
// ❌ 错的
log({text})/*{a:“Aloha”}实际上,这将转换变量
文本输入对象,但在接收
此组件将导致“{}”
因为这里我们只传递道具的名称-->
确实返回一个值,因此隐式返回
==真*/
// ✅ 好的
log({…{text}})/*{a:“Aloha”}还转换变量文本
变成一个物体,但是这个把戏
组件)实际返回
-道具名称:“文本”
-道具的价值:现在是
对象{text:'Hello'}
*/
➡️ 通常,如果这样传递,值x将被视为布尔值,并且x的值将为true,而不是您给定的值。你能和我们分享你看到的例子吗?这是一个很好的解决方案。我自己也有同样的想法。就我而言,
非常值得注意的是,每次都会克隆道具。如果道具是嵌套对象并且经常重新渲染,这可能会很昂贵。
const cmpProps = {
x,
y,
foo,
bar
}
<Comp {...cmpProps} />
const x = 42;
const obj = { x, y: 1337 };
console.log(obj); // result { x: 42, y: 1337 }
const x = 42;
const elm = <MyComponent {...{x}} />;