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

在react render函数中是否可以返回空函数?

曹旭东
2023-03-14

我有一个通知组件,我有一个超时设置。超时后,我调用This.SetState({IsTimeout:True})

我想做的是,如果已经超时,我想只呈现任何内容:

render() {
  let finalClasses = "" + (this.state.classes || "");
  if (isTimeout){
    return (); // here has some syntax error
  }
  return (<div>{this.props.children}</div>);
}

问题是:

返回();//这里有一些语法错误

共有1个答案

汪正卿
2023-03-14

可以,但如果您不想render组件中的任何内容,只需返回null,而不是空白,如下所示:

return (null);

另一个要点是,在JSX内部,如果您是有条件地呈现元素,那么在condition=false的情况下,您可以返回以下任何值false、null、undefined、true。根据单据:

boolean(true/false)、null和undefined是有效的子级,它们将被忽略,意味着它们不呈现。

所有这些JSX表达式将呈现相同的内容:

<div />

<div></div>

<div>{false}</div>

<div>{null}</div>

<div>{undefined}</div>

<div>{true}</div>

示例:

只呈现奇数值,因为对于偶数值,我们返回null

null

const App = ({ number }) => {
  if(number%2) {
    return (
      <div>
        Number: {number}
      </div>
    )
  }
  
  return (null);           //===> notice here, returning null for even values
}

const data = [1,2,3,4,5,6];

ReactDOM.render(
  <div>
    {data.map(el => <App key={el} number={el} />)}
  </div>,
  document.getElementById('app')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='app' />
 类似资料:
  • 问题内容: 我有一个通知组件,并且有一个超时设置。超时后我打电话。 我想做的是,如果已经超时,我什么都不渲染: 问题是: return(); //这里有一些语法错误 问题答案: 是的,您可以,但是如果您不想从组件中得到任何东西,则可以直接返回而不是空白,如下所示: 另一个要点是,在JSX内部,如果您有条件地渲染元素,则​​在情况下,您可以返回这些值中的任何一个。根据 DOC : 是 有效的孩子 ,

  • 问题内容: 在浏览一些旧代码时,我遇到了这个宝石: 第二行在Eclipse中被标记为无效代码,我知道为什么。似乎没有明确抛出任何异常,并且构造函数不可能抛出任何类型的异常(例如)。 我的问题是 为什么 要进行空检查?以前在Java的旧版本中,构造函数是否可以返回null?还是这仅仅是毫无用处的代码? 问题答案: 该代码在任何Java版本中均无效。构造函数不可能返回,即使构造函数会抛出异常,也不会调

  • 有以下功能: 为了更准确,我使用Java中的泛型类型定义了返回的,即,但它不起作用,出现错误: 类型对象不可下标 问:是否有可能定义返回的与泛型类型?

  • 有没有可能创建一个函数,它将lambda函数作为参数(每个lambda函数使用参数),然后返回一个具有单个参数的新函数,并返回所有lambda函数的乘积? 以下是我的非工作示例: 所以本质上,你有一个函数,它需要4个lambda函数,每个函数使用参数。例如,的参数可以类似于。 然后返回一个名为的新函数,该函数的输出是所有lambda函数的乘积,并且有一个参数,该参数传递到的每个lambda函数的参

  • 问题内容: 我想使用Streams.intRange(int start,int end,int step)实现反向排序的流。但是,似乎java.util.Streams类不再可用(但是它仍在标准库的rt.jar中)。此方法是在其他类中还是被其他方法替代? 问题答案: 实际上,JDK中再也没有这种方法了。您能获得的下一个最接近的位置是,但是只会一步一步走。 一种解决方案是实施您自己的解决方案。例如

  • 问题内容: 你能 声明这样 的函数吗? 然后像这样 重新声明 它… 这样可以覆盖函数吗? 可以吗 问题答案: 编辑 解决此答案未直接解决原始问题的评论。如果您是通过Google搜索到达的,请从此处开始 有一个名为override_function的函数可以实际使用。但是,由于此函数是Advanced PHP Debugger扩展的一部分,因此很难为生产使用提供参数。因此,我要说“否”,不可能以原始