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}} />;