代码:

<Twitter username='tylermcginnis33'>
{(user) => user === null
? <Loading />
: <Badge info={user} />}
</Twitter>

代码:

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
}

如果你还不熟悉回调渲染模式(Render Callback Pattern),这个代码可能看起来有点怪。
这种模式中,组件会接收某个函数作为其子组件,然后在渲染函数中以 props.children 进行调用:

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>

.

最新文章

  1. 手机web如何实现多平台分享
  2. HTTP 协议整理(转)
  3. Red Hat Enterprise Linux Server 6.5安装GCC 4.9.2
  4. CE STEPLDR
  5. EventBus使用详解(一)
  6. Java 生成验证码
  7. Writing Text Files On The Client in Oracle Forms 10g
  8. js 函数和变量的提升
  9. java 字节流和字符流的区别 转载
  10. Request、Servlet及其子接口
  11. 【服务器环境搭建-Centos】tmpfs,【转载】
  12. Mahout推荐算法基础
  13. Labview二进制文件的操作
  14. maven排除jar包冲突
  15. Mariadb主从复制
  16. PlugNT CMS v4.6.3 调用文章上一页和下一页及点击数加1
  17. 你分得清楚Maven的聚合和继承吗?
  18. Java字符串操作及与C#字符串操作的不同
  19. ubuntu apt 软件源的更改
  20. [Unity3D] 03 - Component of UI

热门文章

  1. 1097G Vladislav and a Great Legend
  2. TIMER_PWM_CAPTURE
  3. 谈谈Spring 注入properties文件总结
  4. SQL数据透视
  5. javascript总结37:DOM:innerText 和 innerHTML
  6. 使用virtualBox安装CentOS 6.3的详细步骤
  7. review一个javascript功能函数
  8. centos 6.5下安装mysql
  9. 菜鸟的Xamarin.Forms前行之路——原生Toast的简单实现方法
  10. Spring Boot - Spring Cache