河南送变电建设有限公司网站,企业网站新闻wp怎么做,wordpress的后台链接,长安网站建设制作公司state React 把组件看成是一个状态机#xff08;State Machines#xff09;。通过与用户的交互#xff0c;实现不同状态#xff0c;然后渲染 UI#xff0c;让用户界面和数据保持一致。React 里#xff0c;只需更新组件的 state#xff0c;然后根据新的 state 重新渲染用… state React 把组件看成是一个状态机State Machines。通过与用户的交互实现不同状态然后渲染 UI让用户界面和数据保持一致。React 里只需更新组件的 state然后根据新的 state 重新渲染用户界面不要操作 DOM。 state工作原理常用的通知React数据变化的方法是调用setState(data,callback).这个方法会合并data到this.state,并重新渲染组件.渲染完成后,调用可选的callback回调.大部分情况不需要提供callback,因为React会负责吧界面更新到最新状态.常用的模式就是创建多个只负责渲染数据的无状态(stateless)组件,在他们的上层创建一个有状态(stateful)组件并把它的状态通过props传给子级.有状态的组件封装了所有的用户交互逻辑,而这些无状态组件只负责声明式地渲染数据.下面使用es6的class的方式实现一个likedbutton import React from react;
import ReactDOM from react-dom;class LikedButton extends React.Component {constructor(props) {super(props);this.state  {liked : props.liked || false}this.handleClick  this.handleClick.bind(this);}handleClick() {this.setState({liked: !this.state.liked});}render() {var text  this.state.liked ? 喜欢 : 不喜欢;return (div onClick{this.handleClick}Your text is {text}. Click to say./div);}
}LikedButton.propTypes  {liked : React.PropTypes.boolean
}LikedButton.defaultprops  {liked: false
}ReactDOM.render(LikedButton/,document.getElementById(app)
); props 组件中的props是一种父级向子级传递数据的方式.state 和 props 主要的区别在于 props 是不可变的而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。可以通过 getDefaultProps() 方法为 props 设置默认值Props 验证使用 propTypes它可以保证我们的应用组件被正确使用React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效。当向 props 传入无效数据时JavaScript 控制台会抛出警告。 验证器说明   propTypes: {// 可以声明 prop 为指定的 JS 基本数据类型默认情况这些数据是可选的optionalArray: React.PropTypes.array,optionalBool: React.PropTypes.bool,optionalFunc: React.PropTypes.func,optionalNumber: React.PropTypes.number,optionalObject: React.PropTypes.object,optionalString: React.PropTypes.string,// 可以被渲染的对象 numbers, strings, elements 或 arrayoptionalNode: React.PropTypes.node,//  React 元素optionalElement: React.PropTypes.element,// 用 JS 的 instanceof 操作符声明 prop 为类的实例。optionalMessage: React.PropTypes.instanceOf(Message),// 用 enum 来限制 prop 只接受指定的值。optionalEnum: React.PropTypes.oneOf([News, Photos]),// 可以是多个对象类型中的一个optionalUnion: React.PropTypes.oneOfType([React.PropTypes.string,React.PropTypes.number,React.PropTypes.instanceOf(Message)]),// 指定类型组成的数组optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),// 指定类型的属性构成的对象optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),// 特定 shape 参数的对象optionalObjectWithShape: React.PropTypes.shape({color: React.PropTypes.string,fontSize: React.PropTypes.number}),// 任意类型加上 isRequired 来使 prop 不可空。requiredFunc: React.PropTypes.func.isRequired,// 不可空的任意类型requiredAny: React.PropTypes.any.isRequired,// 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接使用 console.warn 或抛异常因为这样 oneOfType 会失效。customProp: function(props, propName, componentName) {if (!/matchme/.test(props[propName])) {return new Error(Validation failed!);}}},/* ... */
});