项目地址:dva-demo,小星给个动力,谢谢!BuildSetup#installdependenciesnpminstall#servewithhotreloadatlocalhost:8000npmstart#buildforproductionwithminificationnpmrun构建技术选择基础框架:reactUI库:antd-mobile脚手架:dva插件使用polished(css-in-jscssmodules)react-loadable(可用于骨架屏加载)vs-code推荐插件autoclosetag(自动关闭html标签)autorenametag(自动修改html标签名称)BracketPairColorizer2(代码括号嵌套颜色区分)vs-code配置修改"emmet.includeLanguages":{"javascript":"javascriptreact"},"emmet.triggerExpansionOnTab":true创建组件的几种方式1.函数定义无状态组件functionHelloComponent(props){return
hello{props.name}
}是无状态的,纯粹展示组件,不涉及状态操作;组件不会被实例化,提高整体渲染性能;组件不能访问这个对象,访问不能通过这种方式创建;组件不能访问生命周期方法;statelesscomponents只能访问inputprops,相同的props会得到相同的渲染结果,不会有副作用吗??;tips:只要有可能,尽量使用无状态组件2.React.createClass(不推荐)varinput=React.createClass({propTypes:{//定义props中传入的各类属性initialValue:React.propTypes.string},defaultProps:{//组件默认props对象initialValue:''},getInitialState:function(){return{text:this.props.initialValue||'占位符'}},handleChange:function(event){this.setState({text:event.target.value})},render:function(){return(Typesomething:
)}})被实例化,具有有状态生命周期的缺点:React.createClass将自绑定函数方法(不像React.Component,它只绑定需要关心的函数),导致不必要的性能开销并增加代码过时的可能性React.createClass的mixins不够自然和直观;React.Component的形式非常适合HigherOrderComponents(HOC),它以更直观的形式展示了比mixin更强大的功能,而且HOC是纯JavaScript。不用担心它们会被丢弃。3.React.Component(有状态组件推荐)classinputextendsReact.Component{constructor(props){super(props);this.state={文本:props.initialValue||'placeholder'}//ES6类中的函数必须手动绑定this.handleChange=this.handleChange.bind(this)}handleChange(event){this.setState({text:event.target.value})}render(){return(Typesomething:
)}}input.propTypes={initialValue:React.PropTypes.string}输入...这。句柄Click=this.handleClick.bind(this)}//方法二:使用bind绑定