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

我有一个通知组件,我有一个超时设置。超时后,我调用this.setState({isTimeout:true})

我要做的是,如果已经超时,我只想不渲染任何内容:

render(){
设finalClasses=“this.state.classes”=“this.state.classes”;
如果(isTimeout){
return();//这里有一些语法错误
}
返回(<div>{this.props.children}</div>);
}

问题是:

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

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

返回值(null);

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

布尔值(真/假)、null和未定义的是有效的子项,
它们将被忽略,这意味着它们根本不渲染

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

<div/>
<部门&gt&lt/部门>
<部门>{false}&lt/部门>
<部门>{null}&lt/部门>
<部门>{未定义}&lt/部门>
<部门>{true}&lt/部门>

示例:

只渲染奇数值,因为对于偶数值,我们将返回null

const-App=({number})=>{
如果(编号%2){
返回(
<div>
编号:{Number}
</div>
)
}
return(null);//=>注意这里,偶数值返回null
}
常数数据=[1,2,3,4,5,6];
ReactDOM.render(
<div>
{data.map(el=><App key={el}number={el}/>)}
</div>,
document.getElementById('app')
)
<脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js“&gt&lt/脚本>
<脚本src=”https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js“&gt&lt/脚本>
<div id='app'/&gt

发表评论