详解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里使用Dom操作Xml
Sep 20 Javascript
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
JS验证图片格式和大小并预览的简单实例
Oct 11 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
js动态引入的四种方法
May 05 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/10/09 PHP
php字符串过滤与替换小结
2015/01/26 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
vue服务端渲染缓存应用详解
2018/09/12 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
python通过文件头判断文件类型
2015/10/30 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
澳大利亚相机之家:Camera House
2017/11/30 全球购物
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
Collection和Collections的区别
2016/05/02 面试题
音乐表演专业毕业生求职信
2013/10/14 职场文书
师德模范事迹材料
2014/06/03 职场文书
安全先进个人材料
2014/12/29 职场文书
聘任通知书
2015/09/21 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书