React-native 遇到问题总结

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,不会报错了


猜你喜欢

转载自blog.csdn.net/shuang__zi/article/details/56288839