详解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实现仿银行密码输入框效果的代码
Dec 13 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
原生JS实现N级菜单的代码
May 21 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 Javascript
js实现页面图片消除效果
Mar 24 Javascript
node+vue实现文件上传功能
May 28 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读取XML值的代码(推荐)
2011/01/01 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
php中数组最简单的使用方法
2020/12/27 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
python中xlutils库用法浅析
2020/12/29 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
主持人演讲稿范文
2013/12/28 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
运动会的口号
2014/06/09 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
三下乡个人总结
2015/03/04 职场文书
课改心得体会范文
2016/01/25 职场文书
windows系统搭建WEB服务器详细教程
2022/08/05 Servers