当前位置: 首页 > Web前端 > HTML5

使用dva+antd-mobile搭建手机web

时间:2023-04-05 17:03:38 HTML5

项目地址: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绑定
//方法三:使用箭头函数绑定{this.handleClick()}}>
routejump/**jump**///方法一:labeljumpimport{Link}from'dva/router'//方法二:props.history(不推荐)props.history.push('/result')//方法三:routerReduxprops.dispatch(routerRedux.push(pathname:'/result',search:'?a=1&b=2',state:{id:32}))/**参数接收**/1.modal/app.js/subscriptions/setup相当于路由守卫,中间件2.locationDva各个组件中props中的Model数据流:Model对象的attribute命名空间:当前Model的名称整个应用的状态是从中合成的以命名空间为键的多个小模型的状态:模型的当前状态。数据存放在这里,直接决定了视图层的outputreducers:Actionprocessor,处理同步动作,用于计算最新的Stateeffects:Actionprocessor,处理异步动作subscription:订阅,相当于监听给dva内部提供多种效果函数的处理函数,比较常用的有call和put。call:执行一个异步函数put:发出一个Action,类似于dispatch通过connectmapStateToProps函数获取state的值并将需要的数据合并到props中,然后通过dispath获取并修改组件中state的值(被连接的组件会自动在props中有一个dispatch方法)//model{namespace:'app',reducers:{updateState(state,{payload}){return{...state,...payload}}}}//组件eventprops.dispatch({type:'app/updateState',payload:{locale:'fr'}})HTTP请求将src/services/service.js中用到的所有接口统一放入(方便管理/函数柯里化)