详解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 相关文章推荐
拖拉表格的JS函数
Nov 20 Javascript
jQuery Flash/MP3/Video多媒体插件
Jan 18 Javascript
各种常用的JS函数整理
Oct 25 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
JavaScript生成随机数的4种自定义函数分享
Feb 28 Javascript
HTML5实现留言和回复页面样式
Jul 22 Javascript
Bootstrap table两种分页示例
Dec 23 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
Aug 29 Javascript
js中的数组对象排序分析
Dec 11 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 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
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
PHP基础知识介绍
2013/09/17 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python3爬取数据至mysql的方法
2018/06/26 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python如何生成xml文件
2020/06/04 Python
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
医学生自我评价
2014/01/27 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
六一亲子活动感想
2015/08/07 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
高三化学教学反思
2016/02/22 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang