如何延迟呈现,直到那时()承诺完成?

时间:2018-01-12 09:22:13

标签: reactjs redux es6-promise

我将reactjs与redux一起使用,这是我的一个组件的一部分。

我想呈现postList返回的承诺handleFetchPosts,但render()函数在then() shouldComponentUpdate完成之前开始渲染

如何在then完成后推迟渲染或重新渲染?

constructor(props) {
    super(props);
    this.postList = props.postList;
    this.props.handleFetchPosts('/main', 'about', '');
}

shouldComponentUpdate(nextProps) {
    if (this.postList !== nextProps.postList) {
        nextProps.postList.then(data => {
            this.postList = data;
        });
        return true;
    }
    else {
        return false;
    }
}

render() {
    return (
        <div className="content">
            <p>
                {this.postList + ""}
                {/*content*/}
            </p>
        </div>
    );
}

2 个答案:

答案 0 :(得分:1)

道歉,我完全改变了我的回答,我绕过了你使用Redux的事实。

你正在使用Redux的事实,我设置了一个asComponentUpdate调用的异步动作,它启动了Promise调用。 这样,您可以在启动Promise之后更新状态,以便在render方法中使用以防止呈现。 一旦调用结束,发送最终的ACTION并返回结果并更改标志。

答案 1 :(得分:0)

要管理组件呈现,请使用组件的import android.support.multidex.MultiDexApplication; public class MyApplication extends MultiDexApplication { /* To enable Multi-Dex, you have 3 options - 1. Declare android.support.multidex.MultiDexApplication as your application class in AndroidManifest.xml 2. Extend MultiDexApplication like we are doing here 3. Override attachBaseContext() in your application class as shown below /* */ /* @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } */ } 。并在收到数据时进行更新。

state