当前位置: 首页 > 面试题库 >

在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>);
  }

问题是: return(); //这里有一些语法错误


问题答案:

是的,您可以,但是null如果您不想render从组件中得到任何东西,则可以直接返回而不是空白,如下所示:

return (null);

另一个要点是,在JSX内部,如果您有条件地渲染元素,则​​在情况下condition=false,您可以返回这些值中的任何一个false, null, undefined, true。根据 DOC

booleans (true/false), null, and undefined有效的孩子 ,他们将被忽略,意味着他们根本不会渲染。

所有这些JSX表达式将呈现相同的结果:

<div />

<div></div>

<div>{false}</div>

<div>{null}</div>

<div>{undefined}</div>

<div>{true}</div>

例:

只有奇数值会被渲染,因为对于偶数值我们正在返回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' />


 类似资料:
  • 我有一个通知组件,我有一个超时设置。超时后,我调用。 我想做的是,如果已经超时,我想只呈现任何内容: 问题是: 返回();//这里有一些语法错误

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

  • 问题内容: MySql存储过程/函数可以在不使用临时表的情况下返回表吗? 创建以下过程 然后用 显示示例表-正如预期的那样-但似乎无法进行以下操作: 是否可以从存储过程/函数中返回查询结果表,如果可以,怎么办? 问题答案: 就目前而言,这是不可能的。 以下是该子句中可能使用的 文档: 如您所见,存储过程不在此列表中。

  • 问题内容: 除了使用关键字调用构造函数时,Java语言中的语句可以返回值的确切情况是什么? 例: 如果我没记错的话,如果它是一个非函数原语,将被返回。否则返回。这个对吗? 换句话说,什么值可以引起? 问题答案: 确切的条件在内部属性上进行了描述,该属性由操作员使用: 来自ECMA-262第3条。版本规格: 13.2.2 调用对象的属性时,将执行以下步骤: 创建一个新的本机ECMAScript对象。

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

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