如何测试react中的this.state
发布网友
发布时间:2022-04-22 19:38
我来回答
共1个回答
热心网友
时间:2022-04-07 10:13
state表示react组件内部的一种状态,通过组件内的getInitialState函数,可以为组件的初始状态赋值,当组件的状态发生改变时,组件会重新渲染。官方对state的说明如下:
组件其实是状态机(State Machines)
React 把用户界面当作简单状态机。把用户界面想像成拥有不同状态然后渲染这些状态,可以轻松让用户界面和数据保持一致。
React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。React 来决定如何最高效地更新 DOM。
二、如何使用state
通过setState函数,可以为组件指定一个状态,当这个状态发生改变时,组件会自动重新渲染,下面的代码展示了state的用法:
[html] view plain copy print?在CODE上查看代码片派生到我的代码片
<!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的值。