zoukankan      html  css  js  c++  java
  • React Render Callback Pattern(渲染回调模式)

    React Render Callback Pattern,渲染回调模式,其实是将this.props.children当做函数来调用。

    例如:

    要根据user参数确定渲染Loading还是Profile组件

    const App = () => {
      return (
        <div>
          <FieldItem username='magalhini'>
            {user => user === null
            ? <Loading />
            : <Profile info={user} />}
          </FieldItem>
        </div>
      );
    };

    Render Callback Pattern的做法是:

    class FieldItem extends React.Component {
      state = { user: null }
    
      componentDidMount() {
        // We can make an ajax call here, for e.g.
        setTimeout(() => this.setState({
          user: `I have now fulfilled something for ${this.props.username}`
        }), 1500);
      }
    
      render() {
        // Render the children with a function using state as the argument
        return this.props.children(this.state.user);
      }
    }

    关键是这句 this.props.children(this.state.user),将this.props.chilren当做函数,将user作为参数传入。

    完整代码如下:

    // Loading component
    const Loading = () => <p>Loading...</p>;
    
    // Profile component
    const Profile = (props) => <p>{props.info}</p>;
    
    const App = () => {
      return (
        <div>
        <h3>An application</h3>
        <FieldItem username='magalhini'>
          {user => user === null
          ? <Loading /> 
          : <Profile info={user} />}
        </FieldItem>
        </div>
      );
    };
      
    class FieldItem extends React.Component {
      state = { user: null }
      
      componentDidMount() {
        // We can make an ajax call here, for e.g.
        setTimeout(() => this.setState({
          user: `I have now fulfilled something for ${this.props.username}`
        }), 1500);
      }
       render() {
        // Render the children with a function using state as the argument
        return this.props.children(this.state.user);
      }
    }
                       
    ReactDOM.render(<App/>, document.getElementById('app'));

    出处:http://blog.ricardofilipe.com/post/react-callback-render-pattern

  • 相关阅读:
    Tomcat6 一些调优设置内存和连接数
    【原创】使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException
    JVM内存的设置
    JBOSS以及tomcat最大连接数配置和jvm内存配置
    摘抄python __init__
    Python中__init__方法介绍
    Python 绝对简明手册
    python中eval, exec, execfile,和compile [转载]
    extern、static、auto、register 定义变量的不同用法
    Python 网络编程说明
  • 原文地址:https://www.cnblogs.com/mengff/p/9664418.html
Copyright © 2011-2022 走看看