IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react(持续更新中) -> 正文阅读

[JavaScript知识库]react(持续更新中)

react特点

声明式

组件化

一次学习,随处使用

create-react-app命令

安装

npx 是npm@5.2版本新添加的命令,简化npm工具,保证使用的是最新的react项目

npx create-react-app 文件名
cd 文件名
npm start
public/html文件
<div id="root"></div>
?
src/index.js
//导入react核心包
import React from 'react'
//导入react-dom渲染dom的包
import ReactDom from 'react-dom'
?
//创建标签
//创建标签,标签上面的属性; 对象,null;  第三个参数以及后续的参数都代表标签里面的内容
const h1Ele = React.createElement('h1', null, 'hello world')
//渲染标签
ReactDom.render(h1Ele, document.querySelector('#root'))

react用class需要使用className

JSX

js和xml的简写,在js中写html

jsx工作机制

//包
?
babel/preset-react ?jsx中有这样一个包
jsx会使用Babel编辑成react.reactElement() 的形式

注意点: 1个根节点,驼峰命名,换行建议用() 元素没有子节点可以用单标签

对象不可以直接使用,对象里面每个属性可以直接使用

数组可以,

小结:jsx可以包含任意表达式(除了对象)

JSX中不能放语句 例如if,switch,for,while

条件渲染

通过if...

key的作用,新能优化

map渲染数据,返回一个新的数组

样式渲染

函数组件

------本质js函数/又称无状态组件

使用

1:先定义,大写
2:使用 return

this指向undefined

------代码编译之后,会默认开启严格模式,而严格模式下调用函数,就是undefined

如果不需要渲染结构,return null

React.render() 解析内部使用过程

React.render(<Hello/>) //解析内部使用过程
-----解析函数组件,发现首字母是大写的,会当做组件进行解析,又发现是一个函数式组件,所以内部会调用这个函数,得到一段JSX(react 元素 /虚拟 dom),转换成真实dom渲染到页面上面
?
注意:Hello() 不推荐这样写,因为这样会当做成一个普通函数使用,而不是一个组件
//插件推荐
Better Comments
TODP Highlight
Image preview

类组件

----复杂组件/状态组件----可以定义state的组件

使用

1:首字母大写
2:类组件应该继承React.Component父类,从而可以使用父类中提供的方法或者属性
3:类组件必须提供render()方法,此方法中的this指向此组件的实例对象,此方法中必须要有return返回值

类组件ReactDOM.reander()渲染过程

ReactDOM.render(<Hello/>, document.querySelector('#root'))
解析<Hello/>, 发现大写开头的,会当做组件进行解析
又发现是一个类组件,内部会new hello()得到一个组件实例,调用实例下面的reander方法,拿到JX结构(虚拟DOM, React 元素)
转换成真实DOM渲染到页面上面

react的特点:

可以被改变,改变之后影响视图

类组件的状态如何定义跟使用

直接在class内部通过等号赋值的是挂载到实例上的

解决this指向的5种方法

1.高阶函数:返回函数的函数,函数作为参数传递的函数 例如:arr.map(() => {})

state = {
 ? ?count: 0,
}
handleClick() {
 ? ?return () => {
 ? ? ? ?//箭头函数里面没有this, 会向外找,而外部就是实例
 ? ? ? ?console.log(this)
 ?  }
}
render() {
 ? ?return (
 ? ?<div>
 ? ?<h2>计数器:{this.state.count}</h2>
 ? ? //
 ? ?<button Onclick={this.handleClick()}>+1</button>
 ? ? </div>
 ?  )
}

2.bind(this) bind指向谁,谁就是this

//bind(this) ? bind指向谁,谁就是this
?
state = {
 ? ?count: 0,
}
handleClick() {
 ? ?console.log(this)
}
render() {
 ? ?return (
 ? ?<div>
 ? ?<h2>计数器:{this.state.count}</h2>
 ? ? //bind是谁,this就指向谁
 ? ?<button Onclick={this.handleClick.bind(this)}>+1</button>
 ? ? </div>
 ?  )
}

3....通过constructor,中的this永远是实例对象

constructor() {
 ? ?super() 
 ? ?this.handleClick = this.handeClick.bind(this)
}
handleClick() {
 ? ?consloe.log(this) ?//实例---实例主体可以调用多次
}
?
render() {
 ? ?<div>
 ? ?<h2>计数器:{this.state.count}</h2>
 ? ? //这里的this指的是实例化对象,
 ? ?<button Onclick={this.handleClick}>+1</button>
 ? ? </div>
}
...通过constructor,中的this永远是实例对象

4.箭头函数

state = {
 ? ?count = 0
}
//挂载在实例上面
handleClick = () => {
 ? ?//箭头函数,this指向找最近一层的外面
 ? ?console.log(this)
}
<h2>计数器:{this.state.count}</h2>
//这里的this指的是实例化对象,
<button Onclick={this.handleClick}>+1</button>

5.点击事件里面包含箭头函数()

state = {
 ? ?count = 0
}
//挂载在实例上面
handleClick(){
 ? ?//箭头函数,this指向找最近一层的外面
 ? ?console.log(this)
}
<h2>计数器:{this.state.count}</h2>
//这里的this指的是实例化对象,
<button Onclick={() => {
 ? ?this.handleClick()
}}>+1</button>
?

this.setstate

this.setstate修改数据的时候,保留原数据

数据改变驱动视图

this.setState({}) //修改state并更新视图

setState() 函数是通过继承而来的

----该操作是合并,不会影响没有操作到的数据

动态更新数据视图更新的两种方法
constructor中通过this.state = {
 ? ?//里面必须携带super()
 ? ?this.state = {}
}
------
?
state = {}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:56:25  更:2021-12-07 11:58:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:44:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码