React基础知识点(下)

简介: React基础知识点

有状态组件和无状态组件


函数组件又叫做 无状态组件,类组件又叫做 有状态组件

状态(state) 即数据

函数组件没有自己的状态,只负责数据展示

类组件有自己的状态,负责更新UI,让页面动起来

State和SetState(★★★)

state基本使用

状态(state)即数据,是组件内部的私有数据,只能在组件内部使用

state的值是对象,表示一个组件中可以有多个数据

通过this.state来获取状态

示例demo

exportdefaultclassextendsReact.Component {
constructor(){
super()
// 第一种初始化方式this.state= {
count : 0        }
    }
// 第二种初始化方式state= {
count:1    }
render(){
return (
<div>计数器 :{this.state.count}</div>        )
    }
}



setState() 修改状态

状态是可变的

语法:this.setState({要修改的数据})

注意:不要直接修改state中的值,这是错误的

setState() 作用:1.修改 state 2.更新UI

思想:数据驱动视图

示例demo

exportdefaultclassextendsReact.Component {
// 第二种初始化方式state= {
count:1    }
render(){
return (
<div><div>计数器 :{this.state.count}</div><buttononClick={() => {
this.setState({
count: this.state.count+1                })   
                }}>+1</button></div>        )
    }
}


小结

修改state里面的值我们需要通过 this.setState() 来进行修改

React底层会有监听,一旦我们调用了setState导致了数据的变化,就会重新调用一次render方法,重新渲染当前组件

抽取事件处理函数

当我们把上面代码的事件处理程序抽取出来后,会报错,找不到this

原因

在JSX中我们写的事件处理函数可以找到this,原因在于在JSX中我们利用箭头函数,箭头函数是不会绑定this,所以会向外一层去寻找,外层是render方法,在render方法里面的this刚好指向的是当前实例对象

事件绑定this指向

箭头函数

利用箭头函数自身不绑定this的特点

利用bind方法(★★★)

利用原型bind方法是可以更改函数里面this的指向的,所以我们可以在构造中调用bind方法,然后把返回的值赋值给我们的函数即可


classAppextendsReact.Component {
constructor() {
super()
    ...
// 通过bind方法改变了当前函数中this的指向this.onIncrement=this.onIncrement.bind(this)
  }
// 事件处理程序onIncrement() {
    ...
  }
render() {
    ...
  }
}



class的实例方法(★★★)

利用箭头函数形式的class实例方法

注意:该语法是实验性语法,但是,由于babel的存在可以使用

// 事件处理程序onIncrement= () => {
console.log('事件处理程序中的this:', this)
this.setState({
count: this.state.count+1    })
  }


小结

推荐:使用class的实例方法,也是依赖箭头函数不绑定this的原因

相关文章
|
1月前
|
Web App开发 存储 前端开发
React 之 Scheduler 源码中的三个小知识点,看看你知不知道?
本篇补充讲解 Scheduler 源码中的三个小知识点。
70 0
|
8月前
|
前端开发 JavaScript 测试技术
React知识点系列(5)-每天10个小知识
React知识点系列(5)-每天10个小知识
34 0
|
8月前
|
缓存 前端开发 JavaScript
React知识点系列(4)-每天10个小知识
React知识点系列(4)-每天10个小知识
18 0
|
8月前
|
前端开发 JavaScript 中间件
React知识点系列(3)-每天10个小知识
React知识点系列(3)-每天10个小知识
21 0
|
8月前
|
存储 缓存 前端开发
React知识点系列(6)-每天10个小知识
React知识点系列(6)-每天10个小知识
33 0
|
1月前
|
XML 资源调度 前端开发
React基础知识点
React基础知识点
60 0
|
1月前
|
缓存 监控 前端开发
这个知识点,是React的命脉
这个知识点,是React的命脉
|
1月前
|
XML 存储 前端开发
react部分知识点总结
react部分知识点总结
39 0
|
8月前
|
缓存 前端开发 JavaScript
React知识点系列(8)-每天10个小知识
React知识点系列(8)-每天10个小知识
26 0
|
8月前
|
缓存 前端开发 JavaScript
React知识点系列(7)-每天10个小知识
React知识点系列(7)-每天10个小知识
34 0