上一章ReactJS实战教程请查看:React组件Component用法解析
状态state是一个可更新的结构,用于包含关于组件的数据或信息。组件中的状态可以随时间改变。状态随时间的变化可以作为对用户操作或系统事件的响应发生。具有状态的组件称为有状态组件。react组件的核心决定了组件的行为及其呈现方式。它们还负责使组件具有动态性和交互性。
状态必须尽可能简单。它可以通过使用setState()方法和调用setState()方法触发UI更新来设置。状态表示组件的本地状态或信息,它只能在组件内部或由组件直接访问或修改。要在发生任何交互之前设置初始状态,需要使用getInitialState()方法。
例如,如果我们有5个组件需要来自状态的数据或信息,那么我们需要创建一个容器组件来保持所有组件的状态。
定义状态要定义状态,必须首先声明用于定义组件初始状态的默认值集。为此,添加一个类构造函数,它使用this.state分配初始状态,this.state的属性可以在render()方法中渲染。
例子
下面的示例代码展示了如何使用ES6语法创建有状态组件。
import React, { Component } from 'react';
class App extends React.Component {
constructor() {
super();
this.state = { displayBio: true };
}
render() {
const bio = this.state.displayBio ? (
<
div>
<
p><
h3>srcmini - IT开发教程网<
/h3><
/p>
<
/div>
) : null;
return (
<
div>
<
h1> Welcome to srcmini!! <
/h1>
{ bio }
<
/div>
);
}
}
export default App;
要设置状态,需要调用构造函数中的super()方法,这是因为在调用super()方法之前,状态未初始化。
更改状态我们可以使用setState()方法来更改组件状态,并传递一个新的状态对象作为参数。现在,在上面的例子中创建一个新的方法toggleDisplayBio(),并将这个关键字绑定到toggleDisplayBio()方法上,否则我们无法在toggleDisplayBio()方法中访问它。
this.toggleDisplayBio = this.toggleDisplayBio.bind(this);
例子
【React状态state用法详解 – ReactJS实战教程】在本例中,我们将向render()方法添加一个按钮。单击此按钮将触发toggleDisplayBio()方法,该方法将显示所需的输出。
import React, { Component } from 'react';
class App extends React.Component {
constructor() {
super();
this.state = { displayBio: false };
console.log('Component this', this);
this.toggleDisplayBio = this.toggleDisplayBio.bind(this);
}
toggleDisplayBio(){
this.setState({displayBio: !this.state.displayBio});
}
render() {
return (
<
div>
<
h1>Welcome to srcmini!!<
/h1>
{
this.state.displayBio ? (
<
div>
<
p><
h4>Jsrcmini - IT开发教程网<
/h4><
/p>
<
button onClick={this.toggleDisplayBio}> 显示更少<
/button>
<
/div>
) : (
<
div>
<
button onClick={this.toggleDisplayBio}>显示更多<
/button>
<
/div>
)
}
<
/div>
)
}
}
export default App;
推荐阅读
- React属性props用法详解 – ReactJS实战教程
- React组件Component用法解析 – ReactJS实战教程
- React JavaScript扩展JSX用法详解 – ReactJS实战教程
- ReactJS和Vue之间的区别 – ReactJS实战教程
- ReactJS和React Native之间的区别 – ReactJS实战教程
- ReactJS和AngularJS之间的区别 – ReactJS实战教程
- React主要特性及其优点和缺点 – ReactJS实战教程
- 使用create-react-app创建React项目 – ReactJS实战教程
- React环境安装和配置完全解读 – ReactJS实战教程