0.5.9 • Published 3 years ago

live-store v0.5.9

Weekly downloads
18
License
MIT
Repository
github
Last release
3 years ago

live-store

With only one API, the mini state manager encapsulated by Redux and react hook can realize global / local state management

只用redux和react hook封装的迷你状态管理器,只用一个api,就能实现全局/局部状态管理

installation

To install the stable version:

npm install --save-dev live-store

That's it!

import createHookStore from 'live-store';

const useStore = createHookStore({reducer1,reducer2,...});

注意:

useStore relies on react's effect subscription store, so it can't be used outside non hook components, There is no Provider injected into the store from the top level, and there is no connection around people, You have to accept using react hooks to develop your project

useStore依赖了react的effect订阅store,所以不能在非hook组件外使用, 没有从顶层注入store的Provider,也没有绕人的connect.使用这个工具, 你必须接受使用react hooks来开发你的项目

Example

project.js

//initstate
const initState = {
    name: '华商金融城中心项目'
};
//actions
const actions = {
    update_project_name: 'update_project_name'
};
//reducer
export default (state = initState, action) => {
    switch (action.type) {
        case actions.update_project_name:
            state.name = action.name;
            break;
    }
    return Object.assign({}, state);
};

goods.js

//initstate
const initState = { name: '苹果手机', num: 20 };
//actions
const actions = {
    update_good_num: 'update_good_num'
};
//reducer
export default (state = initState, action) => {
    switch (action.type) {
        case actions.update_good_num:
            state.num = action.value;
            break;
    }
    return Object.assign({}, state);
};

store.js

import createHookStore from 'live-store';
//import reducer
import project from './project';
import good from './goods';
//merge reducer
const reducer = { project, good };
const useStore = createHookStore(reducer);
//you can alias 
export const useCustomStore = useStore;
import {getGoodsDataApi} from './api';
//app.js
function App(){
    const [state, dispatch] = useStore();
    //or
    const [, dispatch] = useStore();
    //or
    const [state] = useStore();
    //async
    useEffect(() => {
        dispatch.async(getGoodsDataApi());
    },[]);
    return <div>{state}</div>; 
}
ReactDOM.render(
    <App />,document.body
);
0.5.9

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.6

3 years ago

0.5.4

3 years ago

0.5.5

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.2.1

3 years ago

0.5.0

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.0

3 years ago

0.1.8

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago