tct是检查什么| 内分泌失调是什么症状| 什么的嗓音| 血小板有什么作用| 女人排卵是什么时候| 1964年属什么生肖| 985是什么学校| 旅游穿什么鞋最舒服| 逼宫什么意思| 闭口是什么| 月经提前半个月来是什么原因| 西红柿和什么搭配最好| 梦到墓地什么预兆| 斛是什么意思| 姑姑的儿子叫什么| 渺渺是什么意思| i是什么| 严重失眠吃什么药| 鱼香肉丝是什么菜系| 嗓子疼咳嗽是什么原因| 喝中药尿黄是什么原因| 什么样的鼻子| 人生海海是什么意思| 碱吃多了有什么危害| birads3类是什么意思| 购物狂是什么心理疾病| 鹅蛋不能和什么一起吃| 区委副书记是什么级别| 农历七月二十什么日子| 英红九号红茶什么档次| 嗓子疼不能吃什么| 隐翅虫长什么样子| 什么是凯格尔运动| 百合什么时候收获| 口气重是什么原因| 胃出血是什么原因引起的| 蚊子不咬什么血型的人| 胃不好吃什么菜| 76年属什么生肖| 蛐蛐吃什么食物| 禾加末念什么| 肯德基为什么叫kfc| 家里来猫是什么征兆| 发低烧是什么原因| 一个月没有来月经是什么原因| 调理肠胃吃什么好| 男人额头凹陷预示什么| 龟头有白色污垢是什么| 澳门车牌号是什么样子| 维生素d缺乏吃什么药| 口苦口臭挂什么科| cab是什么意思| 怀孕肚子上长毛是什么原因| 头孢和什么不能一起吃| 4是什么生肖| 皮鞋配什么裤子好看| 北京大裤衩建筑叫什么| 咀嚼食用是什么意思| 包头古代叫什么| 抗巨细胞病毒抗体igg高是什么意思| 慢热是什么意思| 儿童口臭什么原因引起的| 小二阳是什么意思| 什么病不能吃鲤鱼| 梅毒吃什么药| 小鱼的尾巴有什么作用| 930是什么意思| 考科二紧张心慌有什么方法缓解| 卡拉是什么意思| 黄金芽是什么茶| 三尖瓣关闭不全是什么意思| 咀嚼什么意思| penis什么意思| 去湿气吃什么| 1968年什么时候退休| 猴跟什么生肖配对最好| 什么是名媛| 什么是升华| 葵花宝典是什么意思| 小孩流鼻血什么原因| 为什么会吐血| 冬瓜什么季节吃最好| 胃疼吃什么药好得最快最有效| 抗着丝点抗体阳性是什么| mdz0.2是什么药| 大象像什么| 胃炎吃什么水果| 卵巢检查做什么项目| 五四运动的精神是什么| 枕头底下放剪刀有什么说法| 乳头痛是什么征兆| cpk是什么意思啊| 命里有时终须有命里无时莫强求什么意思| 梦到喝酒是什么意思| 梦见小麦粒是什么意思| 谜底是什么意思| 耳鬓厮磨是什么意思| 什么是桥本氏甲状腺炎| 胎儿宫内缺氧孕妇有什么症状| 数字化摄影dr是检查什么| c反应蛋白高是什么意思| 许褚字什么| 乳腺检查挂什么科| 过敏性鼻炎吃什么食物好| 7月29号是什么日子| 2001年是什么年| 小孩记忆力差什么原因| 杜甫是什么派诗人| 女人梦见掉头发是什么征兆| 闲鱼卖出的东西钱什么时候到账| 心慌出虚汗是什么原因| 巫师是什么意思| 降血脂吃什么食物| 输卵管堵塞有什么样症状| 丢包是什么意思| 桃花依旧笑春风什么意思| 请人帮忙用什么词| 幽门螺旋杆菌感染有什么症状| 瘰疬是什么病| 宁五行属什么| 确认妊娠是什么意思啊| 社会是什么意思| 鲈鱼吃什么| 雏形是什么意思| 月经期间喝酒会有什么影响| 大唐集团什么级别| 十月十二日是什么星座| 古人的婚礼在什么时候举行| 法令纹用什么填充效果最好| 心电监护pr是什么意思| 回执单是什么意思| 三分钟热度是什么意思| 子宫内膜增生是什么原因| 今天什么日子| 梦到下雨是什么意思| 呼呼是什么意思| 女真族现在是什么族| 男生生理期是什么表现| 被蚂蚁咬了怎么止痒消肿要擦什么药| 畏寒是什么意思| 阴囊瘙痒用什么药最好| 基质是什么| 七月份有什么节日吗| 表里不一是什么意思| 手足是什么意思| 胸前有痣代表什么意思| 海底有什么生物| oh什么意思| 蛇进家里是什么预兆| 正桃花是什么意思| 甘草片不能和什么药一起吃| 诚五行属什么| 奇妙是什么意思| 正方形体积公式是什么| 甲亢和甲状腺有什么区别| 什么叫逻辑思维| 同好是什么意思| 大雪是什么意思| 主动脉钙化什么意思| 喝酒前喝什么不容易醉| 抽血为什么要空腹| 晴对什么| 为什么有脚气| 南京的简称是什么| 孔子是什么学派的创始人| 肝风内动是什么原因造成的| 木瓜有什么功效| 下缘达宫颈内口是什么意思| 宾格是什么意思| hr是什么单位| 小孩上吐下泻吃什么药| 小儿湿疹是什么原因造成的| 身上痒是什么情况| 台风什么时候到上海| 亲家母是什么意思| 脾胃虚寒吃什么食物| jimmychoo是什么牌子| 10月29号是什么星座| 物质是什么意思| 肩膀疼挂什么科| 氨基比林是什么药| 火华读什么| hp是什么牌子的电脑| 栀子花什么时候开| 一座什么| 什么呢| 公鸭嗓是什么声音| 知见是什么意思| 什么什么若狂| 祖籍是什么意思| 做梦死人了是什么征兆| hennessy是什么酒价格多少| 跨宽穿什么裤子好看| 舌头起泡什么原因| 你是什么星座| 什么的葡萄| 内招是什么意思| kiv是什么意思| 重阳节为什么要插茱萸| 诸葛亮姓什么| 吃什么长头发又密又多| 利玛窦什么时候来中国| 除了胃镜还有什么检查胃的方法吗| 胃烧心吃什么能缓解| 逆钟向转位是什么意思| 力排众议是什么意思| 胃疼做什么检查| 什么叫梗| 什么挑担子忠心耿耿| 破屋是什么意思| 高兴的动物是什么生肖| 长白毛是什么原因| 诺丽果有什么功效| 龙眼有什么品种| 吃什么水果好| 梅毒通过什么途径传染| 老板是什么意思| 血涂片检查什么病| 空调开什么模式最凉快| 小腿灼热感是什么原因| 师范类是什么意思| 男大三后面一句是什么| 腰椎生理曲度变直什么意思| 印度为什么没把墨脱占领| 老板喜欢什么样的员工| 90年属什么的生肖| 3月5日是什么星座的| 氨基酸是什么东西| 嘴唇不红润是什么原因| 彩色相片什么时候出现| 烧伤病人吃什么恢复快| 闺蜜生日送什么礼物好| 色盲色弱是什么意思| 6克血是什么概念| hla一b27阳性是什么意思| 查肺部挂什么科| msa是什么| edifier是什么牌子| cocoon是什么品牌| 磁共振和ct有什么区别| 肠胃感冒是什么症状| 林冲代表什么生肖| 入珠是什么| 休渔期是什么时候| 植物神经功能紊乱吃什么药最好| 紫色是什么颜色| 7月15是什么节日| 甲硝唑吃多了有什么危害| dei是什么意思| 10年是什么婚| 脑萎缩有什么症状| 飞机为什么怕小鸟| 地震为什么会发生| 棍子鱼又叫什么鱼| 小孩子为什么会得抽动症| 孩子晚上睡觉磨牙是什么原因| 风疹病毒igg阳性是什么意思| 焦虑症什么症状| 马住什么意思| 道德经是什么意思| 平字五行属什么| 荒唐是什么意思| 樱桃跟车厘子有什么区别| 脚发痒是什么原因| 百度
Skip to content

面试官:你在React项目中是如何使用Redux的? 项目结构是如何划分的??#201

@huihuiha

Description

@huihuiha

一、背景

在前面文章了解中,我们了解到redux是用于数据状态管理,而react是一个视图层面的库

如果将两者连接在一起,可以使用官方推荐react-redux库,其具有高效且灵活的特性

react-redux将组件分成:

  • 容器组件:存在逻辑处理
  • UI 组件:只负责现显示和交互,内部不处理逻辑,状态由外部控制

通过redux将整个应用状态存储到store中,组件可以派发dispatch行为actionstore

其他组件通过订阅store中的状态state来更新自身的视图

二、如何做

使用react-redux分成了两大核心:

  • Provider
  • connection

Provider

redux中存在一个store用于存储state,如果将这个store存放在顶层元素中,其他组件都被包裹在顶层元素之上

那么所有的组件都能够受到redux的控制,都能够获取到redux中的数据

使用方式如下:

<Provider store = {store}>
    <App />
<Provider>

connection

connect方法将store上的getState dispatch 包装成组件的props

导入conect如下:

import { connect } from "react-redux";

用法如下:

connect(mapStateToProps, mapDispatchToProps)(MyComponent)

可以传递两个参数:

  • mapStateToProps

  • mapDispatchToProps

mapStateToProps

redux中的数据映射到react中的props中去

如下:

const mapStateToProps = (state) => {
    return {
        // prop : state.xxx  | 意思是将state中的某个数据映射到props中
        foo: state.bar
    }
}

组件内部就能够通过props获取到store中的数据

class Foo extends Component {
    constructor(props){
        super(props);
    }
    render(){
        return(
         // 这样子渲染的其实就是state.bar的数据了
            <div>this.props.foo</div>
        )
    }
}
Foo = connect()(Foo)
export default Foo

mapDispatchToProps

redux中的dispatch映射到组件内部的props

const mapDispatchToProps = (dispatch) => { // 默认传递参数就是dispatch
  return {
    onClick: () => {
      dispatch({
        type: 'increatment'
      });
    }
  };
}
class Foo extends Component {
    constructor(props){
        super(props);
    }
    render(){
        return(
         
             <button onClick = {this.props.onClick}>点击increase</button>
        )
    }
}
Foo = connect()(Foo);
export default Foo;

小结

整体流程图大致如下所示:

三、项目结构

可以根据项目具体情况进行选择,以下列出两种常见的组织结构

按角色组织(MVC)

角色如下:

  • reducers
  • actions
  • components
  • containers

参考如下:

reducers/
  todoReducer.js
  filterReducer.js
actions/
  todoAction.js
  filterActions.js
components/
  todoList.js
  todoItem.js
  filter.js
containers/
  todoListContainer.js
  todoItemContainer.js
  filterContainer.js

按功能组织

使用redux使用功能组织项目,也就是把完成同一应用功能的代码放在一个目录下,一个应用功能包含多个角色的代码

Redux中,不同的角色就是reduceractions和视图,而应用功能对应的就是用户界面的交互模块

参考如下:

todoList/
  actions.js
  actionTypes.js
  index.js
  reducer.js
  views/
    components.js
    containers.js
filter/
  actions.js
  actionTypes.js
  index.js
  reducer.js
  views/
    components.js
    container.js

每个功能模块对应一个目录,每个目录下包含同样的角色文件:

  • actionTypes.js 定义action类型
  • actions.js 定义action构造函数
  • reducer.js 定义这个功能模块如果响应actions.js定义的动作
  • views 包含功能模块中所有的React组件,包括展示组件和容器组件
  • index.js 把所有的角色导入,统一导出

其中index模块用于导出对外的接口

import * as actions from './actions.js';
import reducer from './reducer.js';
import view from './views/container.js';

export { actions, reducer, view };

导入方法如下:

import { actions, reducer, view as TodoList } from './xxxx'

参考文献

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      一九六八年属什么生肖 血氧是什么 肠化什么意思 七七事变是什么生肖 小米叫什么
      耳鸣什么原因引起 人流挂什么科 就是什么意思 嘴巴里长泡是什么原因 文房四宝是指什么
      夏天能种什么菜 浑水摸鱼什么意思 苯磺酸氨氯地平片什么时候吃 星星代表什么生肖 道德绑架什么意思
      肝内强回声是什么意思 什么是阳历 痔疮瘙痒用什么药 心颤吃什么药效果好 晟这个字念什么
      1971年属猪的是什么命hcv9jop0ns2r.cn 钵钵鸡是什么hcv9jop2ns5r.cn 梦见情敌什么预兆hcv8jop4ns2r.cn 歆字五行属什么hcv8jop8ns0r.cn 卦是什么意思hcv9jop3ns9r.cn
      月经腰疼是什么原因引起的1949doufunao.com 里字五行属什么hcv9jop0ns2r.cn 乏力是什么意思hcv7jop7ns0r.cn 血小板异常是什么原因ff14chat.com 奢侈品是什么意思hcv8jop4ns7r.cn
      ideal是什么意思0735v.com 多吃黑芝麻有什么好处hcv7jop5ns3r.cn 女人大腿内侧黑是什么原因引起的hcv9jop0ns8r.cn 乳晕是什么hcv8jop9ns6r.cn 什么车不能坐hcv8jop6ns7r.cn
      故友是什么意思beikeqingting.com 脾切除后有什么影响hcv9jop6ns1r.cn 筋膜炎挂什么科hcv9jop4ns0r.cn honor是什么牌子的手机hcv8jop4ns5r.cn 艾叶煮水喝有什么功效hcv8jop6ns6r.cn
      百度