当前位置: 首页 > 知识库问答 >
问题:

为什么jsx在这段代码中需要三个点?

巴宏恺
2023-03-14

我发现了一个很受欢迎的问题的答案,下面的代码是:

var condition = true;

return (
  <Button {...condition ? {bsStyle: 'success'} : {}} />
);

为什么...是必需的?如果我省略了,巴别就会对我抱怨说:

repl: Unexpected token, expected ...

它看起来像扩展语法,但condition是一个布尔值。我找不到能解释到底发生了什么的医生。

共有1个答案

郭凡
2023-03-14

如果您签出mdn:Spread运算符:

扩展语法允许表达式在需要多个参数(用于函数调用)或多个元素(用于数组文字)或多个变量(用于析构赋值)的地方展开。

如果您看到jsx语法中的spread运算符来计算表达式,那么

<Button {...condition ? {bsStyle: 'success'} : {}} />

_react2.default.CreateElement(_reactBootstrap.Button,condition?{bsStyle:“success”}:{})

也可以写成:

<Button bsStyle={condition ? 'success' : ''}  />

这意味着您将用空字符串传递propsbsstyle

<Button {...condition ? {bsStyle: 'success', bsSize:"large"} : {}} />
<Button bsStyle={condition ? 'success' : ''} bsSize={condition ? 'large' : ''} />
 类似资料:
  • 在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?

  • 问题内容: 这段代码使我凝视了几分钟: 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 这不是一个。 用法:

  • 问题内容: 我知道的是,全局变量和静态变量存储在段中,而未初始化的数据存储在段中。我不明白的是,为什么我们有专用于未初始化变量的段?如果未初始化的变量在运行时分配了值,那么该变量是否仅仍存在于段中? 在以下程序中, 在段中,并且在段中;那是对的吗?如果我的理解是错误的,请纠正我。 另外,请考虑以下程序, 问题答案: 原因是减小程序大小。想象一下,您的C程序在嵌入式系统上运行,其中代码和所有常量都保

  • 我想了解为什么一段代码不会抛出NullPointerException。 请考虑以下代码: 方法被重复调用,同时以下代码在单独的线程中运行: 只有一个实例。 从不引发NullPointerException。 但是,当方法暂停时,即使暂停0毫秒,也会按预期引发NullPointerException: 我的理解是,在理论上,在检查和调用之间存在竞争条件。在实践中,如果不引入暂停(即从后续方法调用中

  • 我有一些流处理代码,它接受一个单词流并对它们执行一些操作,然后将它们简化为一个,其中包含单词作为键,单词的出现次数作为值。为了代码的简洁性,我使用了jOOL库的类,其中包含许多有用的快捷方法。 类型中的方法不适用于参数 type未定义此处适用的 为什么的行为与有任何不同,我(也许是天真地)认为它是直接等效的,为什么编译器在使用它时不能处理它? (是的,我知道我可以通过将以前的应用程序移到操作中来删

  • 这段代码是我用Java Swing制作的Tic-Tac-Toe程序的一部分。为什么在添加用于添加按钮的for语句时返回NullPointerException?