一、什么是state
state表示react组件内部的一种状态,通过组件内的getInitialState函数,可以为组件的初始状态赋值,当组件的状态发生改变时,组件会重新渲染。官方对state的说明如下:
组件其实是状态机(State Machines)
React 把用户界面当作简单状态机。把用户界面想像成拥有不同状态然后渲染这些状态,可以轻松让用户界面和数据保持一致。
React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。React 来决定如何最高效地更新 DOM。
二、如何使用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>在浏览器中,以上代码执行的效果如下:
初始情况显示如下:
下面解释以上代码:
首先我们在HelloWorld组件中实现了getInitialState函数,该函数返回的是初始时组件的状态值,这里我们返回了一个对象,对象内部有一个inputContent值,在组件的render函数中,我们渲染了一个输入框,并且给输入框加上了事件监听,当输入框中内容发生改变时,会执行handleChange函数,在handleChange函数内部,通过this.setState函数,更新了组件的状态,更新状态时组件会自动重新渲染,所以在输入框中输入的内容会同步显示在页面上,另外,在<span>标签中,通过{this.state.inputContent},获取了state对象中的inputContent的值。
原文链接:https://www.f2er.com/react/307312.html