详解React的回调渲染模式


Posted in Javascript onSeptember 10, 2020

一、一个简单的小例子

1.父组件

<Twitter username='tylermcginnis33'>
 {(user) => user === null
  ? <Loading />
  : <Badge info={user} />}
</Twitter>

2.子组件框架

import React, { Component, PropTypes } from 'react'
import fetchUser from 'twitter'
// fetchUser take in a username returns a promise
// which will resolve with that username's data.
class Twitter extends Component {
 // finish this
}

3.子组件具体实现

import React, { Component, PropTypes } from 'react';
import fetchUser from 'twitter';
class Twitter extends Component {
 state = {
  user: null,
 }
  static propTypes = {
  username: PropTypes.string.isRequired,
 }
  componentDidMount() {
  fetchUser(this.props.username).then(user => this.setState({user}));
 }
  render() {
  return this.props.children(this.state.user);
 }
}

这种模式的优势在于将父组件与子组件解耦和,父组件可以直接访问子组件的内部状态而不需要再通过 Props 传递,这样父组件能够更为方便地控制子组件展示的 UI 界面。譬如产品经理让我们将原本展示的 Badge 替换为 Profile,我们可以轻易地修改下回调函数即可:

<Twitter username='tylermcginnis33'>
 {(user) => user === null
  ? <Loading />
  : <Profile info={user} />}
</Twitter>

到此这篇关于详解React的回调渲染模式的文章就介绍到这了,更多相关React 回调渲染内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript操作JSON的要领总结
Dec 09 Javascript
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
Javascript基础知识(一)核心基础语法与事件模型
Sep 29 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
Oct 28 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 #Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 #Javascript
vue中jsonp插件的使用方法示例
Sep 10 #Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 #Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
Sep 10 #Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 #Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 #Javascript
You might like
如何使用脚本模仿登陆过程
2006/11/22 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python 异常处理总结
2016/10/18 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
Python configparser模块应用过程解析
2020/08/14 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
中式餐厅创业计划书范文
2014/01/23 职场文书
公司承诺书怎么写
2014/05/24 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
技术股份合作协议书
2014/10/05 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
大学生入党自荐书
2015/03/05 职场文书
个人年终总结怎么写
2015/03/09 职场文书
广播体操比赛主持词
2015/06/29 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Python语言内置数据类型
2022/02/24 Python