React state与props学习笔记
组件的状态与属性组件本质上是状态机,输入确定,输出一定确定。组件把状态与结果一一对应起来,组件中有state与prop(状态与属性)。
props属性的用法
var HelloWorld =React.createClass({ rencer:function () { return <p>Hello,{this.props.name1 + ' 'this.props.name2}</p>; },}); var HelloUniverse = React.createClass({ getInitialState:function () { return { name1:'Tim',name2:'John',}; },handleChange: function (event) { this.setState({name: event.target.value}); },render: function () { return <div> <HelloWorld name={...this.state}></HelloWorld> <br/> <input type="text" onChange={this.handleChange} /> </div> },}); ReactDom.render(<HelloUniverse />,document.body);
propTypes组件的属性可以接受任意值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。 var MyTitle = React.createClass({ propTypes: { title: React.PropTypes.string.isRequired,//这个title是必须的,而且它的值必须是字符串 },render: function() { return <h1> {this.props.title} </h1>; } }); getDefaultPropsgetDefaultProps 方法可以用来设置组件属性的默认值。 var MyTitle = React.createClass({ getDefaultProps : function () { return { title : 'Hello World' }; },render: function() { return <h1> {this.props.title} </h1>; } }); ReactDOM.render(<MyTitle />,document.body); this.props.childrenthis.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点。 state
state工作原理常用的通知 React 数据变化的方法是调用 setState(data,callback)。这个方法会合并(merge) data 到 this.state,并重新渲染组件。渲染完成后,调用可选的 callback 回调。大部分情况下不需要提供 callback,因为 React 会负责把界面更新到最新状态。 getInitialState
setState
replaceState
哪些组件应该有 State?大部分组件的工作应该是从 props 里取数据并渲染出来。但是,有时需要对用户输入、服务器请求或者时间变化等作出响应,这时才需要使用 State。 尝试把尽可能多的组件无状态化。这样做能隔离 state,把它放到最合理的地方,也能减少冗余,同时易于解释程序运作过程。
参考文章 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |