1.0.2 • Published 4 years ago
redux-store-hoc v1.0.2
REDUX-STORE-HOC
Getting Started
$ tnpm install redux-store-hoc-hoc --save
// store.js
export const initialState = {
bizName: 'lucy'
};
export function reducer(state = initialState, action) {
const { type, payload } = action;
if (type === 'UPDATE') {
return { ...state, ...payload };
}
return state;
}
export const actions = {
queryBizName() {
return async dispatch => {
const response = await fetch('/demo/bizname');
const result = await response.json();
dispatch({
type: 'UPDATE',
payload: { bizName: result.data },
});
}
}
};
// DemoPage.jsx
import { connect } from 'redux-store-hoc';
import { action } from './store';
@connect(actions)
export default class OrangePage extends React.Component {
render() {
const { payload: { bizName }} = this.props;
return <h1>Hello, {bizName}!</h1>
}
}
// or use `export default connect(actions)(OrangePage)` for instead.
// app.jsx
import { createStore, Provider } from 'redux-store-hoc';
import { reducer } from './store';
import DemoPage from './orange';
ReactDOM.render(
<Provider store={store}>
<DemoPage />
</Provider>,
document.getElementById('root')
);
Advanced
Use 2 HOC instead of DemoPage + App.
// DemoPage.jsx
import { connect, providerHOC } from 'redux-store-hoc';
import { actions, reducer } from './store';
@providerHOC(reducer)
@connect(action)
export default class OrangePage extends React.Component {
// ....
}
// app.jsx
import DemoPage from './orange';
ReactDOM.render(
<DemoPage />,
document.getElementById('root')
);
Notice
If you use react-redux@7.x
, the react
version must greater then 16.8.
LICENSE
BSD-3-Clause License