【JAVASCRIPT】React学习-如何构建一个组件

时间:2022-07-14 22:57:31

摘要

react 学习包括几个部分:

  • 文本渲染
  • JSX 语法
  • 组件化思想
  • 数据流

组件化思想

组件就是 UI + UI 交互逻辑,组件有三个常规map , 分别为state 状态 、 props 数据 、refs 不知道是啥

组件输入为 state 状态 、 props 数据, 输出 为 页面dom 元素。

原理

本质是一个状态机,存在state 标志位,当state变化(调用setState(data, callback))时,会合并data 与 state,并重新渲染组件。
实现时,尽量拆分出无状态组件,并在无状态组件上层建立有状态的父级组件,可以有效封装用户交互逻辑,无状态组件负责页面渲染,其实就是有状态父级组件负责Controller 层, 无状态子组件负责view 层。

不应该存储至state的数据:
1)计算所得数据
2)react 组件
3)基于props的重复数据

如何构建一个组件

1. 拆分dom 元素

2. 创建dom 模板

3. 抽离UI 变化的源,即组件的state, 尽量建立无状态的子组件 以及 有状态的父组件

4. 确认state 生命周期

5. 添加数据流

当更新props 及 state 会 自动递归调用渲染模板(使用这些值得react 组件)
需要做细粒度的数据渲染性能控制,可以重写 shouldComponentUpdate() 方法返回 false 来让 React 跳过对子树的处理。

浏览器性能瓶颈 一般在 dom 更新,并非JS 执行。

一些常见API

  • getDefaultProps
  • getDefaultState

【JAVASCRIPT】React学习-如何构建一个组件的更多相关文章

  1. 【React】react学习笔记02-面向组件编程

    react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件   a.轻量组件-函 ...

  2. React学习(2)—— 组件的运用和数据传递

    React官方中文文档地址:    https://doc.react-china.org/ 了解了组件之后,就需要理解“Props”和“State”的用法.首先来介绍State,State按照字面意 ...

  3. Android学习笔记-构建一个可复用的自定义BaseAdapter

    转载自http://www.runoob.com/w3cnote/android-tutorial-customer-baseadapter.html   作者:coder-pig 本节引言: 如题, ...

  4. react学习(一)组件

    react这个东西,说实话,我刚刚接触一个月不到.感觉这玩意很颠覆我以前的前端开发 比方说,可能,整个项目,并没有一个html文件 比方说,以前我们写前端代码,分的清清楚楚,html里面就是放dom, ...

  5. Blazor入门笔记(1)-从0构建一个组件

    1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.创建项目 ...

  6. 【React】react学习笔记03-React组件对象的三大属性-state

    今天晚上学习了React中state的使用,特做此记录,对于学习的方式,博主仍然推荐直接复制完整代码,对着注释观察现象!: 上文中,我列举了两种React自定义组件的声明,这里我拿方式二进行举例: / ...

  7. 初学React:定义一个组件

    接着聊React,今天说说如何创建一个组件类. <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. React学习之redux

    在阅读本文之前,希望大家对以下知识点能提前有所了解并且上好厕所(文章有点长): 状态提升的概念 react高阶组件(函数) es6基础 pure 组件(纯函数) Dumb 组件 React.js的co ...

  9. 使用 Yarn workspace&comma;TypeScript&comma;esbuild&comma;React 和 Express 构建 K8S 云原生应用&lpar;一&rpar;

    本文将指导您使用 K8S ,Docker,Yarn workspace ,TypeScript,esbuild,Express 和 React 来设置构建一个基本的云原生 Web 应用程序. 在本教程 ...

随机推荐

  1. linux共享文件samba安装与java读取外部文件夹方法

    测试环境RedHat 6.4 一.安装 samba组件安装: (1)首先用“rpm –qa |grep samba”命令检验系统samba服务是否安装. #rpm –qa |grep samba sa ...

  2. &lbrack;工具技巧&rsqb; SecureCRT使用技巧 V1&period;0

    本文档适用对象为需要使用secureCRT做系统或网络等调试的工程师,其必须有用过该款软件,基础功能会使用.对于那些需要修改大量设备的配置时像远程升级等等,更应该学习本文档. 1       Secu ...

  3. Android 开发,你遇上 Emoji 头疼吗?

    在 Android 中,如果需要使用的到 Emoji 表情,你会发现在某些设备上,有一些 Emoji 表情会被以豆腐块 "☐" 的形式显示,这是因为当前设备并不支持这个 Emoji ...

  4. 这可能是最简单的Page Object库

    做过web自动化测试的同学,对Page object设计模式应该不陌生. Page object库应该根据以下目标开发: Page object应该易于使用 清晰的结构 PageObjects 对于页 ...

  5. 【BZOJ2431】【HAOI2009】逆序对数列 DP

    题目大意 问你有多少个由\(n\)个数组成的,逆序对个数为\(k\)的排列. \(n,k\leq 1000\) 题解 我们考虑从小到大插入这\(n\)个数. 设当前插入了\(i\)个数,插入下一个数可 ...

  6. jQuery事件委托

    jQuery事件委托 <ul id="ulBox"> <li data-id="1"></li> <li data-i ...

  7. bzoj 2440 完全平方数 【莫比乌斯函数】

    题目 题意:第Ki 个不是完全平方数的正整数倍的数. 对于一个数t,t以内的数里的非完全平方数倍数的个数:num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数 ...

  8. VS编译duilib项目时候的错误解决方法整理

    @1:找不到Riched20.lib 用everything等软件搜索下磁盘.找到所在的文件夹加入到vs的库文件夹就可以.我得是C:\Program Files (x86)\Microsoft SDK ...

  9. Slice header里面有哪些重要的参数?

    first_mb_in_slice:第一个宏块在slice的位置 slice_type:slice的类型 pic_parameter_set_id:slice对应的pps的id frame_num:表 ...

  10. 搞ACM的伤不起

    劳资六年前开始搞ACM啊!!!!!!!!!!  从此踏上了尼玛不归路啊!!!!!!!!!!!!  谁特么跟劳资讲算法是程序设计的核心啊!!!!!!  尼玛除了面试题就没见过用算法的地方啊!!!!!!  ...