1.Redux
import { createStore, combineReducers } from 'redux';
import { composeWithDevTools } from "redux-devtools-extension";
const reducer = combineReducers({
source:Source
token:Token
});
const store = createStore(reducer, composeWithDevTools())
store.subscribe(() => {
});
export default store;
Redux-thunk中间件(支持异步)
import { applyMiddleware, createStore } from 'redux';
import thunk from 'redux-thunk';
const store = createStore(
reducers,
applyMiddleware(thunk)
);
export const getApi = () => {
return (dispatch) => {
axios.get('/api')
.then((res) => {
const data = res.data
const action = getInitListAction(data)
dispatch(action)
})
.catch((error) => {
console.log(error)
})
}
}
componentDidMount() {
const action = getApi ()
store.dispatch(action)
}
redux-persist
import { createStore } from 'redux'
import {persistStore, persistReducer} from 'redux-persist'
import storage from 'redux-persist/lib/storage'
import reducers from './reducers'
import loading from '../redux/reducers/loading'
const persistConfig = {
key: 'root',
storage,
blacklist:['loading'],
whitelist: ['user']
}
const myPersistReducer = persistReducer(persistConfig, reducers)
const store = createStore(myPersistReducer)
const persistor = persistStore(store)
export {
store,
persistor
}
react-redux
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import "antd/dist/antd.css";
import "./i18n/configs";
import { Provider } from "react-redux";
import rootStore from "./redux/store";
import axios from "axios";
import { PersistGate } from "redux-persist/integration/react";
axios.defaults.headers["x-icode"] = "FB80558A73FA658E";
ReactDOM.render(
<React.StrictMode>
<Provider store={rootStore.store}>
<PersistGate persistor={rootStore.persistor}>
<App />
</PersistGate>
</Provider>
</React.StrictMode>,
document.getElementById("root")
);
import {connect} from 'react-redux'
const mapStateToProps = (state) => {
return {
topicList: state.getIn(['home', 'topicList'])
}
}
const mapDispatchToProps = (dispatch) => {
return {
getTopicList() {
dispatch(getTopicList());
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Header);