ui: typed redux

This commit is contained in:
undefined committed 2022-03-19 03:07:38 +08:00
1 parent e0f38fb0a8
commit 99b6ead86f
6 files changed
+4 -1

No files matched your search

@@ -0,0 +1,34 @@
import { Action, AnyAction, Reducer } from 'redux';
export default async function loadReactRedux<S, A extends Action = AnyAction>(storeReducer: Reducer<S, A>) {
const React = await import('react');
const { render, unmountComponentAtNode } = await import('react-dom');
const { Provider } = await import('react-redux');
const { createStore, applyMiddleware } = await import('redux');
const { default: reduxThunk } = await import('redux-thunk');
const { default: reduxPromise } = await import('redux-promise-middleware');
const reduxMiddlewares = [];
reduxMiddlewares.push(reduxThunk);
reduxMiddlewares.push(reduxPromise);
if (process.env.NODE_ENV !== 'production') {
const { createLogger } = await import('redux-logger');
reduxMiddlewares.push(createLogger({
collapsed: true,
duration: true,
}));
}
const store = createStore(storeReducer, applyMiddleware(...reduxMiddlewares));
return {
React,
render,
unmountComponentAtNode,
Provider,
store,
};
}
window.Hydro.utils.loadReactRedux = loadReactRedux;