上一篇杂七杂八说了下express部分的,现在开始进入正题。

  接下去的顺序,就是项目从零开始的顺序(思路方向)。

【actions定义】

  如图,目录页,有4部分的内容,所以以下几个actions是需要的:initTagsinitLatestinitTimelineinitDirectory,然后点击tags和timeline后,出来的经过筛选的目录列表,所以还需要一个initDirectoryFilter的action,另外点击某个文章title后,查看具体的文章内容,所以还需要一个initPaper的action。

  大致,思路就是这样,然后关于目录组织,以及action的写法(以initTags为例),我做了如下的调整(主要还是个人习惯),能够正常导出就好。

  

  按照以上的actions文件夹下的index.js的写法,从别的地方引入模块,import整个actions即可(可参考下一部分,reducers的引入方式)。

  另外,因为一开始必然不会把数据什么全考虑进来,所以可以暂时把传入的data去掉,具体如下图所示(以initTags为例)。

【reducers部分】

  对应actions,每个action对应到一个reducer。按照原本的设想,因为有多个页面(其实好像只有三个:directory、directoryFilter、paper),每个页面对应一个reducer,然后配合

react-router-redux,方便管理,后来为了偷懒,直接写到一个reducer里面算了。
  具体,看代码部分吧(以initTags为例)。
 
  和actions中的index.js类似,在main.js中引入reducer,直接import整个reducer即可,具体等会看main.js的内容。
  另外,因为一开始必然没有考虑那么全,而且数据相关的也不太会一下子就接进来,所以刚开始只做“搭结构”这动作就可以了,具体如下图代码所示(以initTags为例)。
 
【搭骨架】
  好吧,取名有点取不出来了,只能这样了。
  基本上,把actions和reducers定义好,然后就开始要把他们两个给用上了,但是现在网站的页面部分还没开始(或者完成),那就只有老老实实开始写了。
  根据原网站(传送门),大致需要用到以下几个:前端路由(react-router)、配合路由使用的redux(react-reduxreact-router-redux),这两样是额外的,至于其他bootstrap静态文件、自定义的css文件等,默认当成必须的了。
  先从main.js开始(因为涉及到路由,所以先从总的入口文件开始,把路由定好),具体如下图代码所示。
 
  有个东西差点忘了,因为这个是我最后的main.js的样子,我取数据用了ajax异步获取,所以用了redux-thunk,但是一开始没有用到,直接使用,会导致出错(action返回的是一个object,redux-thunk会把原action改造,使其能够接收function,详细的有点不太描述的清,大致应该是没错),所以,刚开始的时候,因为没用到ajax,可以先把createStore中的applyMiddleware进行省略,使现阶段的流程能够正常走下去。
  
  另外,可以看到页面部分是有个indexPage的,但是这个页面部分实际只是静态的,和其他的主要页面相关性不大,所以暂时不用理会了。
  
  暂时,现在先写到这里,后续再继续聊containers和components部分,以及如何把同步的action改成异步的action。

React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(二)的更多相关文章

  1. react,react-router,redux+react-redux 构建一个React Demo

    创建初始化应用 加速我们的npm. npm install -g cnpm --registry=https://registry.npm.taobao.org 利用create-react-app ...

  2. [Redux] Navigating with React Router <Link>

    We will learn how to change the address bar using a component from React Router. In Root.js: We need ...

  3. 如何使用npm构建一个react demo项目

    方法一: 1) 安装node.js环境  点我进入nodejs官网 1.1) 下载LTS(Long term support)版本,安装 1.2) 在cmd中使用以下命令查看node是否安装成功 no ...

  4. 真刀实战地搭建React+Webpack+Express搭建一个简易聊天室

    一.前面bb两句 因为自惭(自残)webpack配置还不够熟悉,想折腾着做一个小实例熟悉.想着七夕快到了,做一个聊天室自己和自己聊天吧哈哈.好了,可以停止bb了,说一下干货. 二. 这个项目能学到啥? ...

  5. react + node + express + ant + mongodb 的简洁兼时尚的博客网站

    前言 此项目是用于构建博客网站的,由三部分组成,包含前台展示.管理后台和后端. 此项目是基于 react + node + express + ant + mongodb 的,项目已经开源,项目地址在 ...

  6. GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频)

    GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频) GraphQL + React Apoll ...

  7. Redux:with React(一)

    作者数次强调,redux和React没有关系(明明当初就是为了管理react的state才弄出来的吧),它可以和其他插件如 Angular, Ember, jQuery一起使用.好啦好啦知道啦.Red ...

  8. 使用 Yarn workspace,TypeScript,esbuild,React 和 Express 构建 K8S 云原生应用(一)

    本文将指导您使用 K8S ,Docker,Yarn workspace ,TypeScript,esbuild,Express 和 React 来设置构建一个基本的云原生 Web 应用程序. 在本教程 ...

  9. React前端有钱途吗?《React+Redux前端开发实战》学起来

    再不学React就真的跟不上大前端的形式了,目前几乎所有前端的招聘条件都是精通React者优先,看看拉勾网的React薪资,都是15K-20K,这个暑假,必须动起来了. 如果你熟悉JavaScript ...

  10. react+redux教程(七)自定义redux中间件

    今天,我们要讲解的是自定义redux中间件这个知识点.本节内容非常抽象,特别是中间件的定义原理,那多层的函数嵌套和串联,需要极强逻辑思维能力才能完全消化吸收.不过我会多罗嗦几句,所以不用担心. 例子 ...

随机推荐

  1. 由js深拷贝引起的对内存空间的一些思考

    数据类型 js常用数据类型分为基本类型和引用类型 基本类型:null.undefined.数值型.字符串型.布尔型 引用类型:数组.对象 内存空间 var a = [1, 2, 3]; var b = ...

  2. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  3. jquery 记住账号 记住密码

    <body> <label><input type="checkbox" onclick="loginBtn_user()" /& ...

  4. 你需要了解的高可用方案之使用keepalived搭建双机热备一览

    在之前一篇使用nginx搭建高可用的解决方案的时候,很多同学会问,如果nginx挂掉怎么办,比如下面这张图: 你可以清楚的看到,如果192.168.2.100这台机器挂掉了,那么整个集群就下线了,这个 ...

  5. RobotFramework下的http接口自动化Set Request Header 关键字的使用

    Set Request Header 关键字用来设置http请求时的请求头部信息. 该关键字接收两个参数,[ header_name | header_value ] 示例1:设置http请求时的Re ...

  6. 【CJOJ P1096】最佳老农

    http://oj.changjun.com.cn/problem/detail/pid/1096 Description FJ打算带着他可爱的N (1 ≤ N ≤ 2,000)头奶牛去参加" ...

  7. [CF932E]Team Work & [BZOJ5093]图的价值

    CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...

  8. 进一步理解阿贾克斯(Ajax)

    一.ajax简介 1.Asynchronous JavaScript and XML(异步的Javascript和XML) 2.是一种在无需重新加载整个网页的情况下能够更新部分网页的技术. 二.aja ...

  9. 关于KPM算法

    [转]从头到尾彻底理解KMP http://blog.csdn.net/v_july_v/article/details/7041827 int* GetNextval(char* p){ int p ...

  10. GitHub起步---创建第一个项目

    ---恢复内容开始--- 刚起步学习GitHub,边学边说! {参考教程:http://blog.csdn.net/steven6977/article/details/10567719}这里描述的很 ...