版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前端开使用ect-mox-strtr-mastr脚手架,解压更名为foned。在 中新增 ponent、srvic、css 。注:没有特别说明,js开发都在 │-│-│-│-│-│-│-package-│-│-│- │- │-│-│-│-│-{{"name":"blog","description":"blogproject","author":"wayne"}w::'/api':target:'changeOrigin:true}' 到本地8000的webserver处理}安装$$npm$npminstallreact-$npminstallreact-router-缺省npm会安装到dependencies前端路前端路由使用react-router官网文 /react-基本例 /react-使用react-router,更改importimportReactfromimportReactDomfrom'react-import{Route,Link,BrowserRouterasRouter}from'react-router-constHome=()=>constAbout=()=>constApp=()=><Routeexactpath="/"component={Home}<Routepath="/about"component={About}ReactDom.render(<App 在地址栏里面输 登录组 <div<divclass="login-<div<formclass="register-<input <input <input <pclass="message">Alreadyregistered?<ahref="#">Sign<formclass="login-<input <input <pclass="message">Notregistered?<ahref="#">Createan使用这个HTML模板来构建组件特别在 下建立login.js的登录组件 importimportReactfromimport{Link}from'react-router-exportdefaultclassLoginponentrenderrender()return(<divclassName="login-<div<formclassName="login-<input ceholder="邮箱"<input<button>登录"<pclassName="message">?<Linkto="/reg">}}在路由中增加登录组importimportLoginfromconstApp=()=><Routepath="/about"component={About}<Routepath="/login"component={Login}<Routeexactpath="/"component={Home}bodybodybackground:#456;font-family:SimSun;font-size:14px;}.login-{width:360px;padding:8%00;margin:auto;}.formfont-family:"position:relative;z-index:1;background:#FFFFFF;max-width:YaHei",marginmargin:0auto100px;padding:45px;text-align:box-shadow:0020px0rgba(0,0,0,0.2),05px5px0rgba(0,0,0,}.form{background:#f2f2f2;width:100%;border:margin:0015px;padding:15px;box-sizing:border-box;font-size:14px;}.formbuttontext-transform:uppercase;outline:0;background:#4CAF50;width:100%;border:0;padding:15px;color:#FFFFFF;font-size:14px;cursor:}.formbutton:hover,.formbutton:active,.form{background:}.form{margin:15px00;color:#b3b3b3;font-size:12px;}.form.message{importimportwck.config.dev.js文件中增加css的部
报错了,原因没有配置cssloadermodulemodule:rules:{test:exclude:/node_modules/,use:[{loader:'react-hot- ck'{loader:'babel-loader']{{test:/\.css$/,exclude:/node_modules/,use:['style-loader','css-loader'{test:/\.less$/,use:[{loader:"style-loader"{loader:"css-loader"{loader:"less-loader"]}]}可以看到界面,如下(组importimportReactfromimport{Link}from'react-router-dom';import'../css/login.css'exportdefaultclassReg ponentrenderrender()return<divclassName="login-<div<formclassName="register-<input<input<input<input"ceholder="邮箱""ceholder="确 " <pclassName="message"><Link}}importimportRegfromconstApp=()=><Routepath="/about"component={About}<Routepath="/login"component={Login}<Routepath="/reg"component={Reg}<Routeexactpath="/"component={Home}可以看可以看 )导航栏组constconstApp=()=><li><Linkto="/">主页<li><Linkto="/login">登录<li><Link <li><Linkto="/about">关于<Routepath="/about"component={About}<Route<Routepath="/login"component={Login}<Routepath="/reg"component={Reg}<Routeexactpath="/"component={Home}分视图层,负责显示数据,每一个Rt组件一个xxxjs。服务层,负责业务数据处理逻辑,命名为xxxSevicejsModl层,负责数据,数据从后端取登录功能实viw层,登录组件和用户交互。当button点击触发onClck,调用响应函数alClic,llic服务sevce层的loi函数。exportexportdefaultclass{login ,password)//}}importimportReactfromimport{Link}from'react-router-dom';import'../css/login.css'exportdefaultclassLogin{handleClick(event){}render()return(<divclassName="login-<div<formclassName="login-<input ceholder="邮箱"<input "<buttononClick={this.handleClick.bind(this)}>登录<pclassName="message">还?<Linkto="/reg">}}}如何拿到邮箱和importimportReactfromimport{Link}from'react-router-dom';import'../css/login.css'importUserServicefrom'../service/user';constuserService=newUserService();exportdefaultclassLogin {render()return<_Loginservice={userService}}}class_Login {handleClick(event){letfm=event.target.form;fm[0].value,}render()return(<divclassName="login-<div<formclassName="login-<input ceholder="邮箱"<input "<buttononClick={this.handleClick.bind(this)}>登录<pclassName="message">还?<Linkto="/reg">}}UserService的login方法实修改wck.config.dev.js文件中 注意,修改这个配置,需要重启devserverdevServerdevServer:compress:true,port:3000,publicPath:'/assets/',hot:true,inline:true,historyApiFallback:true,stats:{chunks::'/api':target:'changeOrigin:true}}}axios中文说明https: importaxiosfromimportaxiosfrom$npminstallimportimportaxiosfromexportdefaultclass{login( ,password){ , })/*devserver function{console.log(response);}function{})}填入邮箱、,点击登录按钮,返回40,查看Python服务端,地址是了/i。如何解决?1、修改blogserver的代码的路由匹配规则2、
,也就是类似httpd、nginx等的rewrite功能。本次测试使用的是devserver,去看看。uration/dev-server/#devserver-devServerdevServer:compress:true,port:3000,publicPath:'/assets/',hot:true,inline:true,historyApiFallback:true,stats:{chunks::'/api':target: pathRewrite:{"^/api":""},changeOrigin:true}}}重启devserverLocalStorage是为了得到的数据,例如Json。数据就是键值对数据会在不同的下面store.js是一个兼容所有浏览器的LocalStorage包装器,不需要借 或者Flashstore.js会根据浏览器自动选择使用localStorage、globalStorage或者userData来实现本地功能安$$npmi测试letletstore=store.set('user','wayne');consoleconsole.log(store.get('user'));//undefinedconsole.log(store.get('user','a'));//astore.set('user',{name:'wayne',age:30});store.set('school',store.each(function(value,key){//注意这里key、valueconsole.log(key,'-->',console.log(store.get('user'));//undefinedstore.store.addPlugin(require('store/plugins/expire'//过期插store.set('token',res.data.token,(newDate()).getTime()+Mobx状态管odist项目中,感觉基本功能都实现了,但是,sttRdux和Mo。Rdux代码优秀,使用严格的函数式编程思想,学习曲线陡峭,小项目使用的优势不明显。 Mox非常优秀稳定的库,简单方便,适合中小项目使用。使用面向对象的方式,容易学习和接受。现在在项目中使用也非常广泛。Mox和Rc是一对强力组合。Mobx官网 MobX是由Mendix、Coinbase、 内部了的观察者Observer一个组件的onClick触发响应函数,此函数会调用服务。但是服务比较耗时,等处理完,需要引起组件的渲染操作。1、同步调importimportReactfromimportReactDomfrom'react-class{handle(n)for(lets=newDate();newDate()-s<n*1000;);return}}@observer//将reactclassRoot {state={ret:null}//letret=ps.service.handle(4);}{);return<buttononClick={this.handleClick.bind(this)}>触发handleClick函数</button><br<spanstyle={{color:'red'}}>{newDate().getTimeService的handle函数返回值是}}ReactDom.render(<Rootservice={newService()} 2、异步调思路一、使用importimportReactfromimportReactDomfrom'react-classclass{)//newPromise((resolve,reject){setTimeout(()=>resolve('OK'),value=>{//使用obj})}}@observer//将reactclassRoot {state={ret:null}//}{);return<buttononClick={this.handleClick.bind(this)}>触发handleClick函数</button><br<spanstyle={{color:'red'}}>{newDate().getTimeService中修改state的值是}}3、MobximportimportReactfromimportReactDomfrom'react-dom';import{observable}from'mobx';import{observer}from'mobx-react';class{@observableret=-100;handle(){//newPromise((resolve,reject){setTimeout(()=>resolve('OK'),}).}).then(ue=>this.ret=(Math.random()*100);})}}@observer//将reactclassRoot ponent//state={ret:null}//不使用state//}{);return<buttononClick={this.handleClick.bind(this)}>触发handleClick函数</button><br<spanstyle={{color:'red'}}>{newDate().getTimeService中修改state的值是}}ReactDom.render(<Rootservice={newService()} 注login登录功能代码实importimportaxiosfromimportstorefrom'store'import{observable}fr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《焊接自动化技术》教学大纲
- 点金术课件教学课件
- 玉溪师范学院《社会体育指导员一级》2022-2023学年第一学期期末试卷
- 防疫和应急演练方案及流程
- goodhabits课件教学课件
- 项目建议书与可研报告编制大纲及二者区别
- 特殊气候条件下施工方案
- 2024年二季度碳交易市场运行与政策盘点-碳价突破百元 碳市场扩容在即
- 2024年薯、豆相关植物加工品项目成效分析报告
- 2019粤教版 高中美术 选择性必修2 中国书画《第五单元 以形写神的人物画》大单元整体教学设计2020课标
- 中国传统绘画之《千里江山图》教学设计-高中美术人美版(2019)美术鉴赏
- 染色体病总结课件
- 第8章 Q2 8型汽车起重机液压系统课件
- 辽宁省抚顺市药品零售药店企业药房名单目录
- (新版)征信知识竞赛基础题库(500题)
- 湘教版地理八年级上册41《农业》课件
- 化验岗位应急处置卡
- 癫痫临床表现及护理课件
- 新北师大版七年级下册英语(全册知识点语法考点梳理、重点题型分类巩固练习)(家教、补习、复习用)
- Unit 6 Longji Rice Terraces课件-外研版高中英语必修第一册
- 福建师范大学《计算机应用基础》3答卷答案
评论
0/150
提交评论