useRdxRefresh(state)

会根据当前传入的state参数来返一个 函数,如果state 是一个atom,则调用该函数将刷新状态,如果是一个compute,则会重新 调用compute的get方法。


function useRdxRefresh<GModel>(props: RdxValue<GModel>):() => void
  • state: 可是是一个 atom 或者是一个 compute.

Root

The fallback content to display on prerendering
import React from 'react';
import {
useRdxSetter,
RdxContext,
useRdxState,
compute,
useRdxStateLoader,
useRdxValueLoader,
useRdxRefresh,
isLoading,
} from '@alife/rdx';
const pause = (t: number) => new Promise((resolve) => setTimeout(resolve, t));
const AsyncCompute = compute({
id: 'atom',
get: async () => {
await pause(1000);
return 1;
},
});
export const Root = () => {
return (
<RdxContext>
<AsyncComponent />
</RdxContext>
);
};
const AsyncComponent = () => {
const state = useRdxValueLoader(AsyncCompute);
const refresh = useRdxRefresh(AsyncCompute);
return (
<span
style={{
display: 'inline-flex',
justifyContent: 'space-around',
}}
>
<span>{isLoading(state.status) ? '加载中...' : state.content}</span>
<button
onClick={() => {
refresh();
}}
>
刷新
</button>
</span>
);
};