• 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

  • 相关阅读:
    Oracle存储过程获取YYYY-MM-DD的时间格式
    EXP/IMP 导出生产库表的指定数据到测试库一例
    java sm4国密算法加密、解密
    oracle 三表关联查询
    oracle 两表关联查询
    oracle 批量更新之将一个表的数据批量更新至另一个表
    js 不固定传参
    CocoaPods为project的全部target添加依赖支持
    QML 开发神奇加成之为网络资源设置本地缓存
    一步步走向国际乱码大赛-- 恶搞C语言
  • 原文地址:https://www.cnblogs.com/mengff/p/9664418.html
Copyright © 2020-2023  润新知