1.0.2 • Published 4 years ago

redux-store-hoc v1.0.2

Weekly downloads
-
License
BSD-3-Clause
Repository
gitlab
Last release
4 years ago

REDUX-STORE-HOC

version license downloads

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

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago