详解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 相关文章推荐
Prototype使用指南之hash.js
Jan 10 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 Javascript
基于jQuery中对数组进行操作的方法
Apr 16 Javascript
js给onclick赋值传参数的两种方法
Nov 25 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
canvas实现刮刮卡效果
Mar 14 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
Apr 29 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
自己的js工具 Event封装
2009/08/21 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
微信小程序switch组件使用详解
2018/01/31 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
django中send_mail功能实现详解
2018/02/06 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
员工考核评语大全
2014/04/26 职场文书
学习考察心得体会
2014/09/04 职场文书
异地年检委托书范本
2014/09/24 职场文书
青年文明号申报材料
2014/12/23 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
辩护意见书
2015/06/04 职场文书
一文搞懂php的垃圾回收机制
2021/06/18 PHP
mysql如何能有效防止删库跑路
2021/10/05 MySQL