当前位置: 首页 > 后端技术 > Node.js

React技术栈实战+快递前后端博客项目(二)——前端react-xxx、路由配置

时间:2023-04-03 16:03:36 Node.js

项目地址:https://github.com/Nealyang/R...I想等项目做完了再连载一系列的博客,随着开发,确实遇到了很多坑,也请教了很多人。然后我想,为什么不在记录陷阱的同时分享收获。分享固然好,但如果能集思广益岂不更美。我们的口号是:坚决不做不完。本博客将为连载代码博客同步更新博客。以后随着项目的发展,可能会遇到之前写的不合适的地方,回去修改。如有不妥之处~欢迎兄弟们指教。谢谢!react-redux配置说明reducer首先我们在project/app/reducers下新建一个index.js用来导出所有reducer。也用于汇总admin、front等reducer文件。最后combineReducers后直接export。exportdefaultcombineReducers({front,globalState:reducer,admin})以上admin、reducer、front是其他文件中的reducer处理。这里我们可以暂时导出一个空状态。每个对应的sub-reducer大致写法如下:exportconstactionTypes={ADMIN_URI_LOCATION:"ADMIN_URI_LOCATION"};constinitialState={url:"/"};exportconstactions={change_location_admin:function(url){return{type:actionTypes.ADMIN_URI_LOCATION,data:url}}};exportfunctionreducer(state=initialState,action){switch(action.type){caseactionTypes.ADMIN_URI_LOCATION:复制代码返回{...状态,url:action.data};默认值:返回状态}}constadmin=combineReducers({adminGlobalState:reducer,users,tags});exportdefaultadmin定义了initialState(这个状态节点上的initialState,不是全部状态)、actions、actionTypes和reducer。然后倒入减速机。在索引中被引入后,成为状态中的管理节点。configureStore配置商店的文件。这个文件的作用,顾名思义,就是配置store。其中,我们主要做了以下工作。applyMiddleware->安装一些中间件,reducer,并区分环境,判断是否添加开发工具。如:devToolsExtension配合更新createStore代码如下:constwin=window;constsagaMiddleware=createSagaMiddleware();constmiddlewares=[];letstoreEnhancers;if(process.env.NODE_ENV==='production'){storeEnhancers=compose(applyMiddleware(...middlewares,sagaMiddleware));}else{storeEnhancers=compose(applyMiddleware(...middlewares,sagaMiddleware),(win&&win.devToolsExtension)?win.devToolsExtension():(f)=>f,);}导出默认函数configureStore(initialState={}){conststore=createStore(rootReducer,initialState,storeEnhancers);sagaMiddleware.run(rootSaga);if(module.hot&&process.env.NODE_ENV!=='production'){//为reducers启用Webpack热模块替换module.hot.accept('./reducers',()=>{constnextRootReducer=require('./reducers/index');store.replaceReducer(nextRootReducer);});}returnstore;}最后倒入store,用于在App中使用react-router配置说明。react-router中的配置主要在/container/index.js文件中。该文件负责导出所有路由中的文件。说说项目的大致路由规则。默认输入域名(我们这里是localhost)直接进入首页。那是我们项目的前端部分。/->首页(虽然是首页,但仔细看页面结构,其实是文章列表页)/:tag->其他文章列表页/detail/:id->详情页/admin->后台管理主页/admin/xxx->后台管理页面的某个模块,如:/admin/managerTags->标签管理页面/404->notFound所以根据路由配置,规则先具体后模糊。而这里涉及到路由嵌套,所以必须提取组件:index.js渲染部分如下:render(){let{isFetching}=this.props;return(

{isFetching&&}{this.props.notification&&this.props.notification.content?(this.props.notification.type===1?this.openNotification('success',this.props.notification.content):this.openNotification('error',this.props.notification.content)):null}
)}因为路由的模糊部分只需要前面部分是最模糊的,所以我们将它匹配到底部。其他人应该没有怀疑。至于isFetch通知,后面会介绍。至于为什么把这些isFetch和notification放在这里。因为这是所有路由的最外层,所以是front和admin界面下面的公共部分。加载图标和全局提示信息可以共享。所以我们把它放在最外层。一定要记住。对于一组可以共享的东西,我们要把它们放在路由匹配的最外层。下面看下Font和admin的代码constFront=({match})=>{return(
)};admin:render(){const{url}=this.props.匹配;if(this.props.userInfo.userType){return(
{this.props.userInfo.userType==='admin'?
<路由路径={`${url}/newArticle`}component={AdminNewArticle}/><路由路径={`${url}/detail`}component={Detail}/>
:}
)}else{return}}后台注释对于路由匹配,这里必须使用{match}。否则点击链接,会发现路由跳转成功,但是没有渲染对应的页面。为什么在admin中判断this.props.userInfo后续的权限判断?并且我会说说这里遇到的一些问题(重点)。这里我们还是只关注路由部分。同样,您必须使用match来获取url。然后根据自己后台管理的定义项,随着你的开发,后面填写相应的路由即可。结束语至此,本项目的redux和router配置基本完成。跟进开发,回到/app/reducers添加对应的reducer。并在路由中添加一个新页面。如果您有更好的想法,欢迎与我联系。一起改进吧~有什么不明白的地方欢迎提issue。我会立即处理。项目实现步骤系列博客[x]实战react技术栈+快递前后端博客项目(0)——预热波[x]实战react技术栈+快递前后端博客项目(1)--整体项目结构搭建,state状态树设计[x]React技术栈实战+express前端博客项目(2)--前端react-xxx,路由配置实战react技术栈+express前端-端博客项目(三)——后端路由、代理和静态资源托管等配置说明实战react技术栈+express前端博客项目(四)——博客首页代码编写及redux-saga组织实战react技术栈+express前端博客项目(五)——前端与前端登录功能实战react技术栈+express前端博客项目(六)——使用session实现免登录+管理后台权限验证实战react技术栈+express前端博客项目(7)——前端管理界面用户查看功能+后台对应界面开发实战react技术栈+express前端博客项目(8)——前端管理接口标签管理函数+后端对应接口开发实战react技术栈+速递前端博客项目(9)——前端管理接口标签管理函数+后端对应接口开发实战react技术stack+express前端博客项目(10)——前端管理界面发布文章功能实战react技术stack+express前端博客项目(11)——文章部分对应的后端接口添加、删改查询实战react技术栈+express前后端博客项目(12)——发帖部分的前端改进(增删改查、分页等)实战react技术栈+express前后端博客项目(13)——发文前端部分改进(增删改等)实战react技术栈+express前端博客项目(14)--内容详情页展示和阅读数实战react技术栈+express前端博客项目(15)--为博客添加评论功能及对应react技术栈实战后端实现+express前端-端后端博客项目(16)--pm2使用说明实战react技术栈+express前后端博客项目(17)--停工交流,或者有需要可以私信我,欢迎大家提问题。或者加群联系我~扫码关注我的个人微信公众号,直接回复,必有回复。分享更多原创文章。点击交流学习加我微信和qq群。一起学习,一起进步欢迎兄弟加入:Node.js技术交流群:209530601React技术栈:398240621前端技术聊:604953717(新)