相关疑难解决方法(0)

在渲染函数之外访问React Context

我正在使用新的React Context API而不是Redux开发一个新的应用程序,之前,Redux当我需要获取用户列表时,我只需调用componentDidMount我的操作,但现在使用React Context,我的操作就在里面我的消费者在我的渲染函数中,这意味着每次调用我的渲染函数时,它都会调用我的动作来获取我的用户列表,这是不好的,因为我会做很多不必要的请求.

那么,我怎么只能调用一次我的动作,比如componentDidMount不是在渲染中调用?

举个例子,看看这段代码:

让我们假设我将所有内容包装Providers在一个组件中,如下所示:

import React from 'react';

import UserProvider from './UserProvider';
import PostProvider from './PostProvider';

export default class Provider extends React.Component {
  render(){
    return(
      <UserProvider>
        <PostProvider>
          {this.props.children}
        </PostProvider>
      </UserProvider>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我把这个Provider组件包装成我的所有应用程序,如下所示:

import React from 'react';
import Provider from './providers/Provider';
import { Router } from './Router';

export default class App extends React.Component {
  render() {
    const Component = Router();
    return(
      <Provider>
        <Component />
      </Provider>
    )
  }
} …
Run Code Online (Sandbox Code Playgroud)

reactjs react-context

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

标签 统计

react-context ×1

reactjs ×1