1.问题
解决:以上是因为项目刚创建的时候没有执行
执行:react-native start
但是,有的时候会发现执行后里面显示错误 8081端口被占用,无法使用
ERROR Packager can't listen on port 8081
解决:通过命令
lsof -i:端口号 (例如:lsof -i:8081)
查看所有占用 8081端口的进程,然后通过以下的命令进行关闭
kill -9 832
之后就可以通过 react-native start 重新执行了
2.问题二
由于在es6中 this 指向的是上层的对象,所以当在方法中进行调用的时候,其实调用的是该方法对象,而无法找到
这个类对象底下的方法,所以会报错,
解决方案:可以在 constructor 中,对你要调用的方法对象进行绑定 this,如下所示
constructor(props){
super(props);
/*NetUitl.get('http://facebook.github.io/react-native/movies.json',function (ret) {
alert("我收到了吗")
})*/
const ds=new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});
this.state={
dataSource:ds
}
this._renderRow=this._renderRow.bind(this);
}
或是在 render中绑定 this 如下所示
render() {
return (
<View style={{flex:1}}>
<Text style={styles.welcome}>
Welcome!
</Text>
<ListView
showsVerticalScrollIndicator={false}
dataSource={this.state.dataSource}
renderRow={this._renderRow.bind(this)}
/>
</View>
);
}
以上的代码都是将 this._renderRow 这个对象绑定 外层中的this,所以在方法 _renderRow中就可以直接调用this,不会报错了