JSX + React中的动态tabIndex属性

Jes*_*Lee 3 javascript reactjs react-jsx

如何以相同的方式有条件地在React组件上设置tabIndex属性,比如设置'disabled'属性?

我需要能够一起设置值和/或删除属性.

首先尝试使整个属性键和值变量:

<div { tabIndex } ></div>
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨道.

第二个想法是:

const div;
if( condition ){
   div = <div tabIndex="1"></div>
}else{
   div = <div></div>
}
Run Code Online (Sandbox Code Playgroud)

但是,这是不可取的,因为我的实际组件有很多属性,我最终会有大量的重复代码.

我唯一的另一个想法是使用ref,然后使用jQuery来设置tabindex属性,但我宁愿不必那样做.

有任何想法吗?

Aar*_*all 15

您可以使用属性扩展运算符来执行此操作:

let props = condition ? {tabIndex: 1} : {};
let div = <div {...props} />
Run Code Online (Sandbox Code Playgroud)


deb*_*ter 6

我相信有一种更简单的方法(比 Aaron 的建议)。

如果该属性的值为 null 或未定义,React 会从 JSX 元素中删除该属性。我需要得到肯定知道的人的确认。

因此你可以使用这样的东西:

let t1 = condition ? 1 : null;
let div = <div tabIndex={t1}>...</div>;
Run Code Online (Sandbox Code Playgroud)

tabIndex如果t1为空,该属性将被删除。

  • 对我来说,它需要“undefined”而不是 null。`输入'数字| null' 不可分配给类型 'number | 不明确的'。类型“null”不可分配给类型“number |” 未定义'` (2认同)