有没有办法让Apollo Client在加载时全局插入空字符串?

Is there a way to let Apollo Client globally insert empty strings during loading?

我正在使用 Apollo Client 为我的应用程序接收 GraphQL 数据。随着时间的推移,我发现了一种模式,对于我查询的每个值,我都必须包含一个条件语句来处理我的数据仍在加载的时刻。

假设查询如下所示:

query TestQuery($userId: Int!) {
  getUser(id: $userId) {
    name
  }
}

然后,在每个要显示用户名的地方,我必须写这样的东西:

{ !this.props.data.loading && this.props.data.getUser.name }

{ this.props.data.getUser && this.props.data.getUser.name }

我不想在这些地方显示 "Loading..." 或旋转的微调器。有没有办法通过在加载期间将所有 this.props.data.x.y.z 值全局替换为 null 或空字符串来避免此条件语句?

谢谢。

这种方法怎么样?

class GraphqlComponent extends React.Component {
    renderError(){
        // ...
    }

    renderLoading(){
        // ...
    }

    renderLoaded(){

    }

    render(){
        const { loading, error } = this.props;
        if(error){
            return renderError();
        }
        if(loading){
            return renderLoading();
        }
        return renderLoaded();
    }
}

class MyComponent extends GraphqlComponent{
    renderLoaded(){
        // your logic goes here
    }
}