前言:迫于所有项目都要想 react 转移,开始初步的了解 react,由于以前已经学习了 react 的基础知识,今天了解一下 state 和 props 的概况。

针对对象:前端初学者,MVVM 框架初步了解者。


state props 概况

  • state 是组件保存,控制,修改自己的可变状态。
  • state 可以通过 props 来初始化自己的状态 state
  • props 主要作用是让使用该组件的父组件可以传入参数来配置该组件

使用情况

如果你觉得还是搞不清 stateprops 的使用场景,那么请记住一个简单的规则:尽量少地用 state,尽量多地用 props

无状态组件 (stateless)

  • 没有 state 的组件叫作无状态组件(stateless component)
  • state 的组件叫作有状态组件(stateful component)

react.js 鼓励无状态组件在 0.14 版本引入函数式组件-----一种不能使用 state 组件

  • 原来使用这样的方法
class HelloWorld extends Component {constructor() {super()}sayHi () {alert('Hello World')}render () {return (<div onClick={this.sayHi.bind(this)}>Hello World</div>)}
}
复制代码
  • 函数式组件编写
const HelloWorld = (props) => {const sayHi = (event) => alert('Hello World')return (<div onClick={sayHi}>Hello World</div>)
}
复制代码

函数式组件就是一种只能接受 props 和 提供 render 方法的类组件

鼓励使用无状态组件

  • 因为状态会带来管理的复杂性,我们尽量多地写无状态组件,尽量少地写有状态的组件。这样会降低代码维护的难度,也会在一定程度上增强组件的可复用性。

我们更加希望把状态 state 留在上层数据

  • 假设我们做一个评论的列表

    • 评论列表:CommentApp

      • CommentInput(输入框) CommentList(列表展示你)
    • 其中我么推荐把数据放在 父级的 CommentApp 上,然后子级通过 props 来获取数据。
    • 看下图
  • bad one

  • good one

  • better one

    • 我们如果有公用的组件的话,跟好的方法是放在公用的父组件

参考

1、book : react 小书

2、react 官网

react 小书学习笔记-state/props相关推荐

  1. 西瓜书学习笔记第2章(模型评估与选择)

    西瓜书学习笔记第2章(模型评估与选择) 2.1经验误差与过拟合 2.2评估方法 2.2.1留出法(hold-out) 2.2.2交叉验证法(cross validation) 2.2.3自助法(boo ...

  2. DX11龙书学习笔记---渲染管线

    DX11龙书学习笔记---渲染管线 1.输入装配阶段 - 顶点 - 图元拓扑 - 点列表 - 线带 - 线列表 - 三角形带 - 三角形列表 - 带有邻接信息的图元 - 控制点面片列表 - 索引 2. ...

  3. 西瓜书--学习笔记1

    西瓜书–学习笔记1 第一章 1.分类和回归是监督学习的代表,而聚类是无监督学习的代表. 2.归纳和演绎是科学推理的两大基本手段. 归纳:从特殊到一般的"泛化"过程,即从具体的事实归 ...

  4. 小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发

    一.常用组件 在上一个章节中讲解了封装请求数据的模块,在此处请求轮播图的数据 1.首页轮播图数据的请求以及渲染 1.1 轮播图数据的请求 pages/home/home.js import 2 使用组 ...

  5. 微信小程序学习笔记(1)

    微信小程序学习笔记 1.小程序代码结构 2.逻辑层和视图层 3. 小程序的宿主环境(通信模型.运行机制.组件.API) 4. 数据绑定和事件绑定 1.小程序代码结构 当开发者新建一个工程时,项目文件包 ...

  6. 微信小程序学习笔记一 + 小程序介绍 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  7. 周志华西瓜书学习笔记(一)

    周志华西瓜书学习笔记 第一章 绪论 数据处理分为三个阶段:收集,分析,预测. 一.基本概念 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能. Mitchell给出的更形式化的定义为 ...

  8. 微信小程序学习笔记(七)----简单文章推荐列表和分类图标的实现

    想要实现一个顶部是几篇纯文字的推荐文章,推荐文章下面是四个分类图标,具体实现出来是这个样子的,比较简单: 首先先来找一下素材,这几个图标是我在阿里巴巴图标库下载的,这里是下载地址: http://ww ...

  9. 小程序学习笔记(1)

    小程序学习笔记(1) 以下是学习期间记录的笔记: 10-18号晚上学习笔记: 小程序实际上是需要下载安装的,只是很小,用户基本上觉察不到 组件是具有一定的功能的代码的集合 移动端适配: 物理像素:是图 ...

  10. jmh学习笔记-State共享对象

    系列文章目录 jmh学习笔记-源代码编译与bench mode jmh学习笔记-State共享对象 jmh学习笔记-State共享对象前后置方法 jmh学习笔记-代码清除 jmh学习笔记-常量折叠 j ...

最新文章

  1. Tomcat7配置DataSource数据源
  2. for循环里radio多选_Max里的for循环
  3. 计算 1!+2!+3!+……+10!
  4. ios gb2312转utf-8
  5. 判断图像局部过暗_CVPR 2020丨基于记忆增强的全局局部整合网络:更准确的视频物体检测方法...
  6. 数据自治开放模式下的隐私保护
  7. php时间函数单字母,ThinkPhp单字母函数
  8. 416. 分割等和子集(JavaScript)
  9. .NetCore实践篇:成功解决分布式监控ZipKin聚合依赖问题(三)
  10. 弱电箱只埋了一根网线时,如何上网和IPTV兼顾?
  11. html5兼容QQ浏览器,【QQ浏览器5.1】发布 HTML5兼容性测试
  12. 生产追溯系统-IQC来料检验
  13. Java 笔试强训 牛客网选择编程题 02
  14. 简单理解什么叫联邦学习(全)
  15. 关于Qt中QMAKESPEC环境变量
  16. react路由不显示下划线
  17. C语言实现一个区块链,区块链学习(1) sha256算法 c语言实现-Go语言中文社区
  18. layer 弹出层传递参数
  19. 开启电脑自带的远程控制
  20. C语言学习笔记(十五)

热门文章

  1. 网易面经(内含腾讯ieg/IOS一面面经)
  2. 如何写出高性能SQL语句?-性能设计沉思录(6)
  3. 最值得收藏的 算法分析与设计 全部知识点思维导图整理(北大慕课课程)
  4. 山东大学软件学院计算机组成原理课程设计整机实验(3)
  5. 雷达导论PART-III.8 雷达接收机与数字化
  6. linux 小度wifi,树莓派2小度wifi(MT7601U)驱动
  7. 老旧小区智慧用电改造方案
  8. 首席翻译的英语学习方法
  9. 匿名管道 与 命名管道
  10. layui 时间控件 只显示时分或者分秒