即插即用的
react
与redux
链接池, 提供与react-redux
相同的 api.react
react-redux
?react
项目通常都由一颗 "组件树" 构成, 每一个组件变成了这棵树上的节点, react-redux
经过 context
做为中介与各个组件通讯git
这就意味着若是有一个组件脱离了这颗树, 那么这个组件将没法与 store
通讯. 例如 一个特殊的弹框组件github
另外一方面, 对于一些较为特殊的 react
应用(即依靠浏览器或其余路由方式的多页面应用), 这样页面跳转后只能依靠数据持久化方式( sessionStorage
localStorage
等)共享数据.npm
这种状况下, 因为基本上很难存在 根组件
的概念, react-redux
就显得无比乏力.redux
rims
?rims
仅仅是在一些特殊场景下代替了 react-redux
(仍是须要 redux
)api
rims
能够与 react-redux
共存(同一组件不要同时使用两者的 connect
), 可将 store
直接传入 createConnect
, 只维护一个 store
. => demo浏览器
实质上 rims
的 connect
组件的结果是将组件直接与 store
相连bash
使用 rims
, 首先须要建立 store
和构建 connect
方法session
import { createConnect } from 'rims';
export default createConnect(store);
复制代码
createConnect(store)
就是咱们建立好的 connect
方法, 能够看出与 react-redux
使用不一样的地方在于: rims
须要自行建立 connect
ui
npm install --save rims
复制代码
or
yarn add rims
复制代码
// createConnect.js
import { createStore } from 'redux';
import reducers from './reducers';
import { createConnect } from 'rims';
const store = createStore(reducers);
export default createConnect(store);
复制代码
须要建立一个新的文件, 用于建立 store
和 createConnect
建立 store
, 咱们仅替换了 react-redux
, 好消息是若你此前配置过 store
, 那么 store
不须要变更, 仅仅导出 createConnect
便可. 固然这也意味着咱们仍然能够用 redux
的生态: redux-thunk
redux-logger
redux-devtools
等.
import connect from './createConnect';
@connect(state => state)
class App extends React.Component{
// ...
}
复制代码
经过状态数据持久化实现, 使用 redux-persist
实现状态数据持久化.
// createConnect.js
import { createStore } from 'redux';
import { persistStore, persistReducer } from 'redux-persist';
import reducers from './reducers';
import { createConnect } from 'rims';
const persistConfig = {
key: 'root',
storage: storageSession,
};
const persistedReducer = persistReducer(persistConfig, reducers);
const store = createStore(persistedReducer);
export default createConnect(store);
复制代码
rims
仍然有许多不足, 若是你对 rims
感兴趣, 欢迎加入