马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Immutable.js出自Facebook,是最流行的不可变数据布局的实现之一。它实现了完全的持久化数据布局,使用布局共享。所有的更新操作都会返回新的值,但是在内部布局是共享的,来减少内存占用。Immutablejs官网
在上一篇介绍redux的文章,我们可以看到在创建的reducer中举行数据更改的时候,会使用…来复制状态数据,为的就是不对原数据举行直接修改,只做替换,就是为了实现react的数据不可变immutable。也就是说假如state的数据比力简单那还好,万一比力复杂,就要复制很多这样的布局数据,很占内存影响app的性能。
安装
- npm i immutable redux-immutable -S
复制代码 替换redux中的combineReducers,改用redux-immutable里面的
- import { createStore } from "redux";
- import { combineReducers } from "redux-immutable";
- import { CounterReducer } from "./CounterReducer";
- const reducers = combineReducers({
- count: CounterReducer,
- });
- let store = createStore(reducers);
- store.subscribe(() => console.log(store.getState()));
- export default store;
复制代码 改造reducers里面的代码
[code]import { fromJS } from "immutable";
const initialState = fromJS({
counter: 0,
userInfo: {
name: "John Doe",
age: 25,
},
});
function CounterReducer(state = initialState, action) {
switch (action.type) {
case "ADD":
return state.update("counter", (val) => {
console.log(" |