我在React 0.14中有一个无状态功能组件,它在React 0.13中工作,但现在返回以下错误:
在返回的组件实例上找不到
render
方法:您可以 忘记定义render
,从a返回null / false 无状态组件,或尝试呈现类型为a的元素 函数不是React组件。
这是我的组成部分:
function ToggleDisplay(props) {
//should render a <noscript> per React's implementation
if(props.if === false) {
// return <noscript></noscript>; //do I have to do this manually now?
return null;
}
let style = {};
if(shouldHide(props)) {
style.display = 'none';
}
return (
<span style={style} {...props} />
);
}
我现在必须手动返回<noscript>
吗?还有另一种方法可以在无状态组件中返回null吗?
答案 0 :(得分:14)
从React 15.0开始,您可以从无状态功能组件返回null
。 (见#5355)。不再需要返回<noscript />
使这成为可能的更改是React删除了对不从React.Component
继承的组件类的支持,这意味着它们可以可靠地区分React组件(继承React.Component
的类)和功能无状态组件。因此,启用该功能的PR仅涉及删除和简化实例化组件的the code。
答案 1 :(得分:13)
看起来不是,这是Javascript中的技术约束。为了支持箭头函数和普通函数作为“组件”,React需要知道我们是否可以在它们上面调用new。
如果它们只是简单的功能,我们可以在所有内容上调用new 他们返回一个ReactElement。但是,这不适用 null / false / string返回值,我们也想支持它们。我们 也无法调用新的箭头功能。同样,我们也不能打电话 新课程。