React基础

72 阅读3分钟

经典面试题

  1. react/vue中的key有什么作用?(key的内部原理是什么)
  2. 为什么遍历列表时,key最好不要用index?

答案如图:

Snipaste_2022-04-20_20-13-14.jpg

React

public中一般存储静态资源文件

React中只能有一个html文件

vue和React所写的应用是SPA应用(single page app)

React脚手架

  1. xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目

​ a.包含了所有需要的配置(语法检查、jsx编译、devServer…)

​ b.下载好了所有相关的依赖

​ c.可以直接运行一个简单效果

  1. react提供了一个用于创建react项目的脚手架库: create-react-app

  2. 项目的整体技术架构为: react + webpack + es6 + eslint

  3. 使用脚手架开发的项目的特点: 模块化, 组件化, 工程化

创建项目并启动

第一步,全局安装:npm i -g create-react-app

第二步,切换到想创项目的目录,使用命令:create-react-app hello-react

第三步,进入项目文件夹:cd hello-react

第四步,启动项目:npm start

当运行在第一步出现警告,请尝试运行一下,如下博客写的命令。

www.cnblogs.com/houchen/p/1…

react脚手架项目结构

public ---- 静态资源文件夹

​ favicon.icon ------ 网站页签图标

index.html -------- 主页面

​ logo192.png ------- logo图

​ logo512.png ------- logo图

​ manifest.json ----- 应用加壳的配置文件

​ robots.txt -------- 爬虫协议文件(当爬虫爬取文件的时候,规定哪些数据不能爬)

src ---- 源码文件夹

​ App.css -------- App组件的样式

App.js --------- App****组件

​ App.test.js ---- 用于给App做测试

​ index.css ------ 样式

index.js ------- 入口文件

​ logo.svg ------- logo图

​ reportWebVitals.js

​ --- 页面性能分析文件(需要web-vitals库的支持)

​ setupTests.js

​ ---- 组件单元测试的文件(需要jest-dom库的支持)

功能界面的组件化编码流程(通用)

  1. 拆分组件: 拆分界面,抽取组件

  2. 实现静态组件: 使用组件实现静态页面效果

  3. 实现动态组件

​ 1).动态显示初始化数据

​ a.数据类型

​ b.数据名称

​ c.保存在哪个组件?

​ 2).交互(从绑定事件监听开始)

todoList案例

小知识点:

  1. defaultChecked是一开始打开页面是默认的勾选(并且只能使用一次),checked是定死的 后期无法进行改变
  2. onKeyUp是获取键盘按起的时间,尽量用up
  3. target属性是获取触发事件对象的目标,也就是绑定事件的元素。event.target表示DOM元素,然后获取相应的值
  4. uuid的库比较大 ,nanoid的库比较小,会生成全球唯一的id
  5. 引入文件的时候,第三方的文件放在上面,自己的文件放在下面
  6. value.trim() 删除字符串开始和末尾的空格,在if里面是:去除之后value不为空
  7. reduce对数组的进行条件统计以及条件求和
  8. 当箭头函数的函数体制后一个‘return’语句时,可以省略‘return’关键字和方法体的花括号。
  9. 如果箭头函数使用了花括号,即使有一句表达式,也必须有return

案例总结:

  1. 拆分组件,实现静态组件 注意:className、style的写法
  2. 动态初始化列表,如何确定将数据放在哪一个组件的state中
    1. 某个组件使用:放在其自身的state中
    2. 某些组件使用:放在他们共同的父组件state中(状态提升)
  3. 关于父子之间通信:
    1. 【父组件】给【子组件】传递数据:通过props传递
    2. 【子组件】给【父组件】通过props传递,要求父提前给子传递一个函数
  4. 注意defaultChecked和checked的区别,类似的还有:defaultValue和value
  5. 状态在哪里,操作状态的方法就在那里