详解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的ajax功能实现的RSS Reader 代码
Sep 03 Javascript
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
jquery 多级下拉菜单核心代码
May 21 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
JavaScript实现图片DIV竖向滑动的方法
Apr 25 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
通俗易懂地解释JS中的闭包
Oct 23 Javascript
JS实现的A*寻路算法详解
Dec 14 Javascript
详解vue 图片上传功能
Apr 30 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
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函数
2008/10/03 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
js转换对象为xml
2017/02/17 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
基于python实现文件加密功能
2020/01/06 Python
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
学生实习介绍信
2014/01/15 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
校园环保建议书
2014/05/14 职场文书
大学新闻系自荐书
2014/05/31 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2014年建筑工作总结
2014/11/26 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
食品卫生管理制度
2015/08/06 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers