构建一个React-redux应用(知乎日报篇)

背景


本项目是采用 `React+redux` 实现的知乎日报的App,所有API均来自网络(若涉及侵权,请及时联系我删除)

运行


- 获取 `git clone https://github.com/Hancoson/react-redux-demo.git`

- 安装 `npm install(yarn)`

- 启动 `npm start`

- 构建 `npm build`

对应技术


- 底层技术 `React+redux+react-router`

- 编码规范 `ES6`

- 构建工具 `webpack`

- UI `Antd`

- API 采用Yahoo跨域访问代理

- 其他工具技术 `React-hot-load`,`babel`,`webpack-dev-server`等

技术实现


react

A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES

state & props

- `props`(属性)和`state`(状态)的改变都会触发`render`函数来更新界面;

- 属性(`props`)是由父组件传递给子组件的;

- 状态(`state`)是组件内部维护的数据,当状态发生变化的同时,组件也会进行更新。 当状态发生转换时会触发不同的钩子函数,从而让开发者有机会做出相应操作。


生命周期

//初始化阶段

getDefaultPropos      //只调用一次,实力之间共享引用

getInitialState      //初始化每个实例特有的状态

componentWillMount    //render之前最后一次修改状态的机会

render                //只能访问this.props和this.state,只有一个顶层组件,不允许修改状态和DOM输出

componentDidMount    //成功render并渲染完成真实DOM后触发,可以修改DOM

//运行中阶段

componentWillReceiveProps  //父组件修改属性触发,可以修改新属性,修改状态

shouldComponentUpdate      //返回false会阻止render调用

componentWillUpeate        //不能修改属性和状态

render                    //只能访问this.props和this.state,只有一个顶层组件,不允许修改状态和DOM输出

componentDidUpdate        //可以修改DOM

//销毁阶段

componentWillUnMount    //在删除组件之前进行清理操作,比如计时器和事件监听器。

组件化的开发思路

所谓组件,即封装起来的具有独立功能的UI部件

- React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义成组件, 然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体UI的构建。

- 如果说MVC的思想让你做到视图-数据-控制器的分离,那么组件化的思考方式则是带来了UI功能模块之间的分离。

redux

先简单说一下 `redux` 和` react` 是怎么配合的。`react-redux` 提供了`connect`和`Provider`两个好基友,它们一个将组件与`redux`关联起来,一个将`store`传给组件。组件通过`dispatch`发出`action`,`store`根据`action`的`type`属性调用对应的`reducer`并传入`state`和这个`action`,`reducer`对`state`进行处理并返回一个新的`state`放入`store`,`connect`监听到`store`发生变化,调用`setState`更新组件,此时组件的`props`也就跟着变化。


核心代码

app入口文件


store


reducer


总结


因为整个项目组我是第一个用react+redux做项目的,遇到问题只能自己解决,如果不是在github上下载了别人的代码,我觉得自己是不可能按时完成任务的,它让我少走了很多弯路。写一个已经被写烂的todo demo和写一个完整的项目完全是两回事,所以我非常欣赏和感谢那些愿意分享自己代码的人,也会将自己的代码分享出来,希望对大家有帮助。

最后附上github地址https://github.com/Hancoson/react-redux-demo ,喜欢的麻烦帮我点个star,我会分享更多干货。

原文地址:http://www.vsoui.com/2017/01/13/build-a-react-redux-app/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容