坚持 成长 每日一篇
今天遇到一个bug
AwesomeProject.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.
代码如下:
var AwesomeProject = React.createClass(
{
//右边按钮
onRightButtonPress: function()
{
this.refs.nav.push({
title:'From Right',
component: ForRightScene
})
},
//ref="nav"是给NavigatorIOS添加引用,类似给view设置一个tag,方便onRightButtonPress函数调用
render:function()
{
return
(
<NavigatorIOS
ref="nav"
style={styles.container}
initialRoute={{
component: HomeScene,
title: 'My View Title',
rightButtonTitle:'MORE!',
onRightButtonPress:this.onRightButtonPress,
}}
/>
);
}
});
大概意思是没有返回一个有效的组件:
经过查找发现原来是我的return()第一个括号换行了。。。所以才造成了上面的错误。。。
同时这里介绍render的几种写法
第一种是直接带function如:
render:function()
{
return(
<NavigatorIOS
ref="nav"
style={styles.container}
initialRoute={{
component: HomeScene,
title: 'My View Title',
rightButtonTitle:'MORE!',
onRightButtonPress:this.onRightButtonPress,
}}
/>
);
}
第二种是省去:function,风格有点像C语言函数的掉用 如:
render (){
return(
<NavigatorIOS
ref="nav"
style={styles.container}
initialRoute={{
component: HomeScene,
title: 'My View Title',
rightButtonTitle:'MORE!',
onRightButtonPress:this.onRightButtonPress,
}}
/>
);
};
第三种是用=>语法,这样子就省去了return语句了
render:() =>(
<NavigatorIOS
ref="nav"
style={styles.container}
initialRoute={{
component: HomeScene,
title: 'My View Title',
rightButtonTitle:'MORE!',
onRightButtonPress:this.onRightButtonPress,
}}
/>
),