📦 just a box, nobody use
简单的跨组件状态管理
interface BoxState {
label: string | undefined;
size: number;
}
const labelBox = createBox(
{
label: undefined,
size: 0,
} as BoxState,
{
async fetch() {
let {label, size} = fetch('https://box.server');
return {
label,
size,
};
},
increase(state, size) {
if (state.size + size > 10) {
return;
}
return {
size: state.size + size,
};
},
},
{
autoResolveDependencies: true,
},
);
export const useLabelBox = labelBox.useBox;
const Component: FC = () => {
const [{label, size}, {increase}] = useLabelBox();
//
return <></>;
};
// TODO: getter example & docs
- getter value
- async action ( Support partial state update )
- auto resolve update dependencies ( Power by Proxy )
- types safe
MIT