详解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 相关文章推荐
jquery $(document).ready() 与window.onload的区别
Dec 28 Javascript
关于js new Date() 出现NaN 的分析
Oct 23 Javascript
window.open打开页面居中显示的示例代码
Dec 27 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
Sep 04 Javascript
详解网站中图片日常使用以及优化手法
Jan 09 Javascript
React快速入门教程
Jan 17 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
Aug 10 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
Apr 28 Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 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
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
执行iframe中的javascript方法
2008/10/07 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
理解javascript闭包
2015/12/15 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
原生js实现照片墙效果
2020/10/13 Javascript
python基础教程之Hello World!
2014/08/29 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python中几种自动微分库解析
2019/08/29 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python 装饰器的使用示例
2020/10/10 Python
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
简历自我评价怎么写好呢?
2014/01/04 职场文书
安全生产先进个人材料
2014/02/06 职场文书
公司授权委托书
2014/04/04 职场文书
最常使用的求职信
2014/05/25 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
工程安全生产协议书
2014/11/21 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
Vue.Draggable实现交换位置
2022/04/07 Vue.js