React Native加载屏幕(条件渲染)

时间:2015-12-09 14:55:23

标签: javascript android reactjs react-native react-jsx

我正在尝试在HTTP调用完成后在React Native Android应用中呈现视图。

我的渲染方法:

render: function() {
    if (this.state.obj.name) {
        return this.renderPage();
    } else {
        return (<Loading />);
    }
}

&LT;正在加载/&gt;包含显示“正在加载”的简单视图和文本元素。

我在componentDidMount()中调用网络请求:

componentDidMount: function() {
    var self = this;

    SomeService.getObjById(1).then(function(data) {

        var obj = JSON.parse(data._bodyText);

        self.setState({
            obj: obj
        });
    });
},

但是,当我更新状态并实例化'obj'(现在有一个名称prop)时,会调用render,它会返回渲染页面,但视图不会更新。

我的renderPage方法在光线如下时起作用:

renderPage: function() {
    return (
        <View><Text>Hello</Text></View>
    )
}

但是当它有超过6行代码时,它似乎没有更新。

任何想法为什么事件虽然条件在调用结束时返回不同的组件,实际的视图不会更新?

1 个答案:

答案 0 :(得分:1)

我通过在更改视图之前发出请求来解决此问题。

这仍然无法正常工作,但我在navigator.push()周围添加了一个setTimout(function(){},0),这有效,因为它将'push'推送到调用堆栈的末尾。

不奇怪,但有效