render props的运用
术语 “render prop” 是指一种在 React 组件之间使用一个值为函数的 prop 共享代码的简单技术
通常的 这个值为函数的prop 拥有相同的一些参数和逻辑
例如 我们有一个 toggle button 点击按钮时显示当前一些特殊内容 这个功能在许多组件中都要用到
普通情况下 如果我们不做处理 可能需要在每个组件里写如下一段代码
import React, { Component } from 'react'
export default class Toggle extends Component {
state = {
on:false,
}
toggle = () => {
this.setState({
on:!this.state.on
})
}
render() {
return (
<div className={toggleStyle}>
{
this.state.on && (
<h1>我是蓝胖</h1>
)
}
<button onClick={this.toggle}>显示/隐藏</button>
</div>
)
}
}
const toggleStyle = {
background:"red"
}
这是一段简单的逻辑和功能 区别是 每个组件要渲染的内容都不一样
如果有这种需求 render props 是非常合适的
首先 写一个组件

调用这个组件的时候 传入一个render 方法 接受3个参数 返回一段jsx

在组件中 执行传入的render方法 并传入需要的参数

页面上显示了我们指定的内容

同样的我们再写一个组件 在Toggle1中也传入 一个叫propChild的方法 这个方法跟上一个组件的render一模一样
所以render props其实只是一个叫法 它其实指的是这一类的prop 你可以改成任何名字 不一定非要叫render

第二个组件中 传入不一样的参数

可以看到 我们可以用render props 进行代码复用

render props的运用的更多相关文章
- React-代码复用(mixin.hoc.render props)
前言 最近在学习React的封装,虽然日常的开发中也有用到HOC或者Render Props,但从继承到组合,静态构建到动态渲染,都是似懂非懂,索性花时间系统性的整理,如有错误,请轻喷~~ 例子 以下 ...
- React Render Props 模式
概述 Render Props模式是一种非常灵活复用性非常高的模式,它可以把特定行为或功能封装成一个组件,提供给其他组件使用让其他组件拥有这样的能力,接下来我们一步一步来看React组件中如何实现这样 ...
- 可复用 React 的 HOC 以及的 Render Props
重复是不可能的,这辈子都不可能写重复的代码 当然,这句话分分钟都要被产品(领导)打脸,真的最后一次改需求,我们烦恼于频繁修改的需求 虽然我们不能改变别人,但我们却可以尝试去做的更好,我们需要抽象,封装 ...
- [React] Use Prop Collections with Render Props
Sometimes you have common use cases that require common props to be applied to certain elements. You ...
- [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose
This lesson takes the concept of render props and migrates it over to streaming props by keeping the ...
- React 之 render props 的理解
1.基本概念 在调用组件时,引入一个函数类型的 prop,这个 prop定义了组件的渲染方式. 2.回调渲染 回顾组件通信的几种方式 父-> 子 props 子-> 父 回调.消息通道 任 ...
- React高阶组件 和 Render Props
高阶组件 本质 本质是函数,将组件作为接收参数,返回一个新的组件.HOC本身不是React API,是一种基于React组合的特而形成的设计模式. 解决的问题(作用) 一句话概括:功能的复用,减少代码 ...
- React中render Props模式
React组件复用 React组件复用的方式有两种: 1.render Props模式 2.高阶组件HOC 上面说的这两种方式并不是新的APi. 而是利用Raect自身的编码特点,演化而来的固定编码写 ...
- 学习React系列(十)——Render Props
解决问题:将行为封装,供多个组件使用(在多个组件之间分享某段代码) 组件中的props属性中包含一个"render"属性(该属性为一个返回值为元素的方法),然后在该组件的rende ...
随机推荐
- day05:数组与字典常识(20170217)
#1:数组功能的使用:print ("a4A".isdecimal()) #print ("18".isdigit()) #判断是否是数字print (&quo ...
- RenderBox使用说明书&原理浅析
本文基于1.12.13+hotfix.8版本源码分析. 0.目录 一.RenderBox的用法 1.RenderBox的使用基本流程 2.RenderObjectWidget 3.非容器控件的hitT ...
- redis 主从哨兵02
一.为什么要复制 1.实现数据的多副本存储,从而可以实现服务的高可用 2.提供更好的读性能,分担读请求 二.复制技术的关键点及难点 1.如何指定被复制对象 2.增量还是全量,以及如何实现增量 3.复制 ...
- 【MySQL】如何解决分库分表遇到的自增主键的问题?
雪花算法 Redis生成主键
- Java IO(二十) PrintStream 和 DataOutputStream 异同
Java IO(二十) PrintStream 和 DataOutputStream 异同 一.相同点 都是继承与FileOutputStream,用于包装其它输出流. 二.不同点 (一).Print ...
- fastjson漏洞利用备忘
预备知识: 起rmi服务 用marshalsec-0.0.3-SNAPSHOT-all.jar起一个rmi服务. java -cp marshalsec-0.0.3-SNAPSHOT-all.jar ...
- 【转】Android安全研究经验谈
本文转载自:http://www.cnblogs.com/whp2011/archive/2015/01/26/4250875.html 一.安全研究做什么 攻击角度:对某个模块进行漏洞挖掘的方法,对 ...
- Vulnerability of SSL to Chosen-Plaintext Attack 读书报告
这篇文章讲述了在SSL上的选择明文攻击.我想分四个部分讲讲我对这篇文章的理解. 1.CPA的定义: 2.文章讲述SSL相关基本概念漏洞: 3.对SSL的CPA攻击的过程: 4.实现这种攻击的可能性以及 ...
- Rocket - diplomacy - LazyModule的组织方式
https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...
- Rocket - tilelink - Broadcast
https://mp.weixin.qq.com/s/-pjCLzzincJz0Z66orx8kg 介绍Broadcast的实现. 1. 基本介绍 TLBroadcast实现的是 ...