zoukankan      html  css  js  c++  java
  • [React] Implement a React Context Provider

    If you have state that needs to exist throughout your application, then you may find yourself passing props all over the application and even "drilling" the prop through components that don't really care about the prop at all. In this lesson, we'll see a sample of a small app that has the "prop drilling problem" and learn how to implement the "Provider pattern" to access context state anywhere in the component tree.

    To implement a context provider for render props:

    class ToggleProvider extends React.Component {
      static contextName = '__toggle__'
      static Renderer = class extends React.Component {
        static childContextTypes = {
          [ToggleProvider.contextName]:
            PropTypes.object.isRequired,
        }
        getChildContext() {
          return {
            [ToggleProvider.contextName]: this.props
              .toggle,
          }
        }
        render() {
          return this.props.children
        }
      }
      render() {
        const {
          children,
          ...remainingProps
        } = this.props
        return (
          <Toggle
            {...remainingProps}
            render={toggle => (
              <ToggleProvider.Renderer
                toggle={toggle}
                children={children}
              />
            )}
          />
        )
      }
    }
    
    function ConnectedToggle(props, context) {
      return props.render(
        context[ToggleProvider.contextName],
      )
    }
    ConnectedToggle.contextTypes = {
      [ToggleProvider.contextName]:
        PropTypes.object.isRequired,
    }

    Modify the code:

  • 相关阅读:
    sql server 查询当前月份日期列表数据
    redis + cookies 实现持久登入
    JS浏览器兼容问题
    Multicast注册中心
    django模板高级进阶
    django高级视图和URL配置
    django表单操作之django.forms
    django站点管理
    django表单
    django数据库模型
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8058054.html
Copyright © 2011-2022 走看看