Answers:
是的,您可以,但是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' />
return null
并且return (null)
它们是相同的:)
return
那么React会给出一个错误。因此,这return null
是必需的。
是的,您可以从React渲染方法返回一个空值。
您可以返回以下任何内容: false, null, undefined, or true
根据文档:
false
,null
,undefined
,和true
有效的儿童。他们只是不渲染。
你可以写
return null; or
return false; or
return true; or
return undefined;
但是return null
,最优选的是,它表示不返回任何内容
有点偏离主题,但是如果您需要一个永远不会呈现任何内容的基于类的组件,并且很乐意使用一些尚待标准化的ES语法,则可能需要执行以下操作:
render = () => null
这基本上是一种箭头方法,当前需要使用transform-class-properties Babel插件。React不会让您定义没有render
功能的组件,这是满足我所想到的这一要求的最简洁的形式。
我目前正在从文档中借用的ScrollToTop变体中使用此技巧react-router
。以我为例,该组件只有一个实例,并且不呈现任何内容,因此,简短形式的“ render null”非常适合。
在render()函数中返回假值将不呈现任何内容。所以你可以做
render() {
let finalClasses = "" + (this.state.classes || "");
return !isTimeout && <div>{this.props.children}</div>;
}