在线excel表格助力企业高效管理与数据分析的未来趋势
585
2022-05-30
@Author:Runsen
你是否将所有 JavaScript 脚本放在一个大文件中,并在所有页面上使用这个文件?如果是这样,你可能需要考虑使用代码拆分!
代码拆分
我们将变量的类型拆分到constants.js
constants.js
export const SERACH_FOCUS = 'header/SERACH_FOCUS' export const SERACH_BLUR = 'header/SERACH_BLUR'
1
2
注意所有的变量类型都必须要export 导出。
actionCreators 本身是一个函数,同样需要export出来。主要用在mapDispathToProps中的dispatch。
actionCreators.js
import * as constants from './constants' export const searchFocus = () =>({ type: constants.SERACH_FOCUS }) export const searchBlur = () =>({ type: constants.SERACH_BLUR })
1
2
3
4
5
6
7
8
9
上面就完成了对actionCreators 与 constants 的拆分。
由于header/index.js需要导入reducer,constants,actionCreators
因此,需要在Store中的index.js将reducer,constants,actionCreators导出。
redux-immutable
在header的reducer.js里把header变成immutable对象之后,在组件里获取focused属性就得这样获取:focused:state.header.get('focused')
immutable好处。
1. 保证不可变(每次通过Immutable.js操作的对象都会返回一个新的对象) 2. 丰富的API 3. 性能好 (通过字典树对数据结构的共享)
1
2
3
4
安装:npm install redux-immutable --save
主要使用的是fromJS
import * as constants from './constants' import {fromJS} from 'immutable' const defaultState = fromJS({ focused: false }); export default (state = defaultState, action) => { if (action.type === constants.SERACH_FOCUS) { return state.set('focused',true) } if (action.type === constants.SERACH_BLUR) { return state.set('focused',false) } return state; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
store的数据储存是来自header/store/reducer.js
JavaScript Redux
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。