1、react中的状态提升

  react的状态提升就是用户对子组件操作,子组件不改变自己的状态,而是通过自己的props把操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是react单项数据流的特性决定的。

官网的话:共享state(状态)是通过将其移动到需要它的组件的最接近的共同祖先组件来实现的,这被称为“状态提升”。

2、react高阶组件(函数)

  首先了解下js高阶函数

  react高阶组件与js高阶函数用法差不多,只不过传入的参数变成了react组件,并返回一个新的组件

  高阶组件可以看做是装饰器模式在react的实现,即允许向一个现有的对象添加新的功能,同时又不改变其结构,属于包装模式的一种

3、什么叫pure function (纯函数)

满足两个条件:(1)给出同样的参数值,该函数总是求出同样的结果,该函数结果值不依赖任何隐藏信息或程序执行处理可能改变的状态或在程序的两个不同的执行,也不能依赖来自I/O装置的任何外部的输入

(2)结果的求值不会促使任何可语义上可观察的副作用或输出

纯函数

sin(x),返回实数x的sin值

length(s),返回串s的大小

encrypt(k,d),运行一个使用key k 关于日期片d的确定加密算法

非纯函数

(1)返回当前天星期几的函数是一个非纯函数,因为在不同的时间它将产生不同的结果,它引用了一些全局状态,同样的,任何使用全局状态或静态变量潜在地是非纯函数

(2)random()是非纯函数,因为每次调用潜在地产生不同地值,这是因为伪随机数产生器使用和更新了一个全局的“种子”状态,加入我们修改它去拿种子作为参数,例如random(seed),那么random变为纯函数,因为使用同一种子值的多次调用返回同一随机数

(3)printf()是非纯函数,因为它促使输出到一个I/O装置,产生了副作用

React预备知识点的更多相关文章

  1. 你要的 React 面试知识点,都在这了

    摘要: 问题很详细,插图很好看. 原文:你要的 React 面试知识点,都在这了 作者:前端小智 Fundebug经授权转载,版权归原作者所有. React是流行的javascript框架之一,在20 ...

  2. React入门知识点清单

    做前端的一定都知道现在是三大框架--Vue.React.Angular三足鼎立的时代.Vue是公认的最容易入门的,因为它文件结构上有传统的HTML的影子,让刚接触它的前端人员刚到很"亲切&q ...

  3. React Native知识点

    1. Live Reload和Hot Reloading的区别: 相同点:都是你只要保存一下原文件,那么App就会实时刷新. 区别:Live Reload是全局刷新,而Hot Reloading是局部 ...

  4. react相关知识点

    1.react内联样式写法: <div style={{width:'200px',height:'100px',border:'1px solid red'}}> </div> ...

  5. react相关知识点链接整理

    1.React组件之间的通信 2.中间件做代理解决跨域问题 3.不要再问我跨域的问题了 4.React 组件数据流 && 组件间沟通 5.如何理解虚拟DOM 6.react性能调谐与d ...

  6. react核心知识点高度总结

    本文系统的将react的语法以最简练的方式列举出来 安装 写在前面 JSX 组件的定义 state 生命周期 方法 条件渲染 列表 表单 组合嵌套 扩展语法 context传递props 错误拦截 r ...

  7. react基本知识点合集

    妹子UI里面有React的相关组件与用法:http://amazeui.org/react/components React官方网站:https://facebook.github.io/react/ ...

  8. react native 知识点总结(一)

    一.关于react native 版本的升级 参照文档:http://reactnative.cn/docs/0.45/upgrading.html react-native -v   查看当前版本 ...

  9. React基础知识点全解

    •      propTypes.defaultProps 作为 properties 定义,也可以在组件外部通过键值对方式进行设置. •      设置组件初始的 state不支持 getIniti ...

随机推荐

  1. C语言指针专题——指针难学的4点原因

    前一篇跟大家聊了聊指针的概念,可是就算了解了指针是什么,为什么依然感觉难学?我试着从几个点切入,聊聊指针难学之处. 文末会给大家推荐几本书,有需要的朋友可以看看! 难点1. 讨厌的星号 定义指针变量p ...

  2. I/O:ByteBuffer

    ByteBuffer: static ByteBuffer allocate(int capacity) :分配一个新的字节缓冲区. static ByteBuffer allocateDirect( ...

  3. matlab考试重点详解

    此帖是根据期末考试复习重点补充完成, 由于使用word编辑引用图片和链接略有不便, 所以开此贴供复习及学习使用.侵删 复习要点 第一章 Matlab的基本概念,名称的来源,基本功能,帮助的使用方法 1 ...

  4. 个人永久性免费-Excel催化剂功能第73波-数据转换:单行多项目转多行单项目

    数据分析的前半部分数据处理.转换等工作是一个又脏又累的活,默默地干着,却又不出彩让人看到过程的艰辛和成果.如何让这个过程可以更加轻松一点,是Excel催化剂为大家所想的,今天带来一大刚需的数据转换功能 ...

  5. [leetcode] #279 Perfect Squares (medium)

    原题链接 题意: 给一个非整数,算出其最少可以由几个完全平方数组成(1,4,9,16……) 思路: 可以得到一个状态转移方程  dp[i] = min(dp[i], dp[i - j * j] + ) ...

  6. java和golang通过protobuf协议相互通信

    目录 整体结构说明 protobuf2文件 golang客户端 目录结构 生成pb.go文件 main.go util.go java服务端 目录结构 pom.xml application.yml ...

  7. Linux更换默认Security源

    很多时候 修改了软件源,但是发现更新还是很慢,查看一下,如下图,有一个security ,显然主源还是在ubuntu,ubuntu本身在国外,所以很慢,因此考虑替换为国内镜像. 图1 1.备份数据源列 ...

  8. python课堂整理4---列表的魔法

    一.list   类, 列表 li = [1, 12, 9, "age", ["大白", "小黑"], "alex"] ...

  9. JAVA-1.连接数据库

    import java.sql.*; import com.mysql.jdbc.Driver; /* * <JDBC基础篇> * 连接数据库一般来说分为6个步骤: *1-加载驱动 *2- ...

  10. WTM 构建DotNetCore开源生态,坐而论道不如起而行之

    作为一个8岁开始学习编程,至今40岁的老程序员,这辈子使用过无数种语言,从basic开始,到pascal, C, C++,到后来的 java, c#,perl,php,再到现在流行的python. 小 ...