一个组件的显示状态可以由内部状态state、外部参数props所决定。

props:

  1、props 是从外部传进组件的参数,主要是父组件向子组件传递数据。

  2、props 对于使用它的组件来说是只读的。要想修改props,必须通过父组件修改。所以子组件的props 通常是父组件的state。

  3、默认值

    为了组件的健壮性,在传入props 的时候常给默认值。

const SubComponent=(props)=> {
return (<h1>{props.name}</h1>)
}
SubComponent.defaultProps = {
name: 'Rain_tdk'
};
export default SubComponent

  4、为开发方便我们需要对props 的数据类型进行检验

import PropTypes from 'prop-types';
const SubComponent=(props)=> {
return (<h1>{props.name}</h1>)
}
SubComponent.defaultProps = {
name: 'Rain_tdk'
};
SubComponent.propTypes = {
name: PropTypes.string
};
export default SubComponent

  更多检验参考 :https://www.jianshu.com/p/2896acb5746b

state:

  1、state是React组件中的私有对象,用于控制这个组件本身的状态

  2、setState()采用merge的方式修改state。setState会重新调用render()刷新UI,直接通过this.state=‘xxx’的方式也会修改state但是不会重新渲染。

   注:setState({...newState})当state为Object、Arrary 时diff 比较的是引用,不会刷新UI 。需要使用 concat /slice /...运算符等产生新引用的方法。

  3、应用场景:

      大部分组件的工作应该是从props里取数并渲染出来,但是当需要 用户输入、服务器请求、延定时变化 等作出响应。

      通常在有状态state的组件中处理用户交互逻辑,并通过props传递给子组件(通常为无状态组件)中。

  4、那些属性应该用state

      state 中应该保存可能被事件处理器改变并触发用户页面更新的数据。

  5、哪些属性不应该存储在state中

      5-1、计算所得数据。计算数据应该在render()中实现,如果存储在state中需要手动更新state 比较麻烦

      5-2、基于props 的重复数据。组件中应该保持props为唯一的数据来源,除非需要知道历史数据是啥。

      5-3、不要将React组件保存在state中。在render()里使用props、state来创建他。

  总结:state让你修改(不修改的数据别往state存)。props不让你修改。多个state、props共同影响UI 的时在render()中实现。

  

React state和props使用场景的更多相关文章

  1. React.js 小书 Lesson12 - state vs props

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson12 转载请注明出处,保留原文链接和作者信息. 我们来一个关于 state 和 props 的 ...

  2. react 中state与props

    react 中state与props 1.state与props props是只读属性,只有在组件被实例化的时候可以赋值,之后的任何时候都无法改变该值.如果试图修改该值时,控制台会报错 only re ...

  3. react基础语法(五) state和props区别和使用

    props的验证: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  4. React中的state与props的再理解

    props可以看做是 property 的缩写的复数,可以翻译为属性,类似于HTML 标签的自定义属性.在大多数React教程里讲 state 和 props 主要的区别在于 props 是不可变的, ...

  5. React中的State与Props

    一.State 1.什么是 state 一个组件的显示形态可以由数据状态和外部参数决定,其中,数据状态为 state,外部参数为 props 2.state 的使用 组件初始化时,通过 this.st ...

  6. React中state和props分别是什么?

    整理一下React中关于state和props的知识点. 在任何应用中,数据都是必不可少的.我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据.React的数据是自顶向下 ...

  7. React组件的state和props

    React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...

  8. React & update state with props & Object.assign

    React & update state with props & Object.assign Object.assign({}, oldObj, newObj) https://re ...

  9. React应用程序设计过程中如何区分模块到底是state还是props?

    根据官方文档,满足以下任意条件的模块,就不是State,原文如下: 1.Is it passed in from a parent via props? If so, it probably isn’ ...

随机推荐

  1. iOS程序依赖管理的工具——CocoaPods

    1. 简介 CocoaPods是一个负责管理iOS项目中第三方开源代码的工具,其源码在Github上开源.使用CocoaPods可以节省设置和更新第三方开源库的时间并提高工作效率. 2. CocoaP ...

  2. 【原创】大数据基础之Impala(3)部分调优

    1)将coordinator和executor角色分离 By default, each host in the cluster that runs the impalad daemon can ac ...

  3. .net 操作excel

    .net 操作excel的常用组件:EPPlus,NPOI 1.NPOI,即POI的.NET版本(POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office文件, ...

  4. Django-路由控制

    Django-路由控制 一.URL路由基础 URL是web服务的路口,用户通过浏览器发送过来的任何请求都会被发送到一个指定的URL地址里,然后被响应. 在django项目中编写路由就是向外暴露我们接收 ...

  5. form 组件

    https://www.cnblogs.com/wupeiqi/articles/6144178.html class F2Form(forms.Form): title1=fields.CharFi ...

  6. spring-mvc访问本地html文件

    项目中要用到在线预览word文档,刚开始考虑是要将word转成pdf文件,然后再直接在浏览器打开pdf文档即可, 但是项目部署在Linux下,在网上搜了一下没有找到合适的方法, 后来项目组讨论用POI ...

  7. 源码解析Django CBV的本质

    Django CBV模式的源码解析 通常来说,http请求的本质就是基于Socket Django的视图函数,可以基于FBV模式,也可以基于CBV模式. 基于FBV的模式就是在Django的路由映射表 ...

  8. VMware workstation 上克隆CentOS 6.x 系统后网卡无法启动的问题

    在日常学习中,我们往往没有足够的物理机资源来搭建多节点的实验环境,一个比较好的解决方案就是利用虚拟机来模拟物理机完成实验. 这样一来,多节点操作系统的部署就可以利用VMware 自带的系统“克隆”功能 ...

  9. P4391 [BOI2009]Radio Transmission 无线传输(KMP)

    题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入输出格式 输入格式: 第一行给出字符串的长度,1 < L ≤ 1, ...

  10. kmp算法:

    自学kmp算法: first time:wa #include<cstdio> #include<algorithm> #include<iostream> #in ...