3、React中的状态(this.state)

前端之家收集整理的这篇文章主要介绍了3、React中的状态(this.state)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、什么是state

state表示react组件内部的一种状态,通过组件内的getInitialState函数,可以为组件的初始状态赋值,当组件的状态发生改变时,组件会重新渲染。官方对state的说明如下:

组件其实是状态机(State Machines)

React 把用户界面当作简单状态机。把用户界面想像成拥有不同状态然后渲染这些状态,可以轻松让用户界面和数据保持一致。

React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。React 来决定如何最高效地更新 DOM。


二、如何使用state

通过setState函数,可以为组件指定一个状态,当这个状态发生改变时,组件会自动重新渲染,下面的代码展示了state的用法
<!DOCTYPE html>
<html lang="en">
<head>
	<Meta charset="UTF-8">
	<title>State</title>
	<script type="text/javascript" src="../react-0.13.0/build/react.js"></script>
	<script type="text/javascript" src="../react-0.13.0/build/JSXTransformer.js"></script>
</head>
<body>
	<div id="container"></div>
	<script type="text/jsx">
		var HelloWorld = React.createClass({
			getInitialState: function() {
				return {
					inputContent: 'World'
				};
			},handleChange: function(event){
				this.setState({inputContent: event.target.value});
			},render: function() {
				return (
					<div>
						Hello <span>{this.state.inputContent}</span>
						<br/><input type="text" onChange={this.handleChange} />
					</div>
				);
			}
		});
		React.render(
			<HelloWorld />,document.getElementById('container')
		);
	</script>
</body>
</html>
在浏览器中,以上代码执行的效果如下:
初始情况显示如下:

当输入框中的内容发生改变时,Hello后面的字符串会跟着变化成输入的内容

下面解释以上代码
首先我们在HelloWorld组件中实现了getInitialState函数,该函数返回的是初始时组件的状态值,这里我们返回了一个对象,对象内部有一个inputContent值,在组件的render函数中,我们渲染了一个输入框,并且给输入框加上了事件监听,当输入框中内容发生改变时,会执行handleChange函数,在handleChange函数内部,通过this.setState函数,更新了组件的状态,更新状态时组件会自动重新渲染,所以在输入框中输入的内容会同步显示页面上,另外,在<span>标签中,通过{this.state.inputContent},获取了state对象中的inputContent的值。
原文链接:https://www.f2er.com/react/307312.html

猜你在找的React相关文章