小编Liv*_*tan的帖子

为什么状态在通过 React Router Link 组件时未定义?

我正在尝试通过 React Router Link 组件传递道具,但状态仍未定义,有人知道为什么吗?

路线:

<Route path="/movie" component={Movie} render={props => 
<Movie {...props} />} />
Run Code Online (Sandbox Code Playgroud)

链接:

<Link to={{ pathname: '/movie', state: { fromMovieList: true}}} > 
Title </Link>
Run Code Online (Sandbox Code Playgroud)

从路径“/movie”渲染的组件

class Movie extends React.Component {

  render () {
    console.log(this.props.location.state); // undefined
    return (
      <div> Hello </div>
        )
      }
    }

export default Movie;
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

10
推荐指数
1
解决办法
6843
查看次数

如何在 JavaScript 中使异步查询同步?

我遇到一个问题:我的管理员页面在渲染时没有检查当前用户是否有权查看该页面。一旦它检查权限(需要一秒钟左右)并意识到用户没有权限,就会出现错误页面。理想情况下,我不希望它在检查权限之前完全呈现。我认为问题在于获取当前用户数据的查询是异步的,所以我相信我需要使用 async 和 wait 来使其同步。

这是一个 AdministratorPage.jsx 文件,在检查权限时不应呈现

import 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) => {
                    if(!data.currentUser..permissions)) {
                        this.props.history.push('/error');
                    }
                    return (
                       ... content rendered ...
Run Code Online (Sandbox Code Playgroud)

代码的执行在完成 currentUser(client).then((data) => 调用之前调用第二个返回函数,但我希望首先完成此调用。

这是 currentUser.js 文件,它执行查询来检查当前用户的数据

import gql from 'graphql-tag';

export default apolloClient => apolloClient
    .query({
        query: gql`
            query CURRENT_USER {
                name
                age
                gender
                permissions
            }
        `,
    }) …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs graphql

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×2

reactjs ×2

graphql ×1