为了账号安全,请及时绑定邮箱和手机立即绑定

在检查客户端权限之前 React 中的页面呈现

在检查客户端权限之前 React 中的页面呈现

慕慕森 2021-07-09 14:11:20
我在 Javascript 中执行了一个查询来获取我的应用程序中当前用户的数据。此查询返回当前用户(客户端)的数据,这些数据用于使用 Apollo Client 和 GraphQL 检查我的 React 应用程序中各个页面的客户端访问权限。但是,对于只有管理员有权访问的页面,在进行此查询时,页面会呈现,以便没有管理员权限的用户可以临时查看页面的内容。一旦检查了权限并且知道用户没有访问权限,就会产生一个错误页面。我希望立即生成此错误页面,以便没有权限的客户根本无法查看任何内容。// This is a currentUser.js file that is imported by various React components // which uses the query to check permissionsimport gql from 'graphql-tag';export default apolloClient => apolloClient    .query({        query: gql`            query CURRENT_USER {                name                age                gender                permissions            }        `,    })    .then(({ data }) => ({ currentUser: data }))    .catch(() =>        ({ currentUser: {} }));// This is a AdministratorPage.jsx file that shouldn't render whilst // permissions are checkedimport currentUser from '../lib/currentUser';import React, { Component } from 'react';import { ApolloConsumer } from 'react-apollo';class AdministratorPage extends Component {    render() {        return (            <ApolloConsumer>                {(client) => {                currentUser(client).then((data) => { ...}有任何想法吗?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您应该呈现加载页面或某种加载指示器,直到获取当前用户数据。在你的render方法中尝试这样的事情:


<Query query={GET_CURRENT_USER}>

  {({ data, loading, error }) => {

    if (loading) return <Loading />;

    if (error) return <p>ERROR</p>;


    return (

      <AdministratorPage />

    );

  }}

</Query>


查看完整回答
反对 回复 2021-07-15
  • 1 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信