所以对于一个又需要刷新数据,又需要控制对话框,而且获取数据要请求两次 api 的组件,就会变成这个样子(CallBack 版本):
exportdefaultfunctionComponent(props) { let [dialogState, setDialogState] = useState(false); // some states for dialogs let [renderData, setRenderData] = useState(null); // some states for rendering let [page, setPage] = useState(1); // some states which force data refresh useEffect(() => { fetchSomeData("url", {params: "Some Params"}, {config: "Some Configurations"}, (data) => { // callback for success let someProps = getSomeProps(data); fetchSomeData("url2", {params: someProps}, {config: "Some Configurations"}, (data) => { // funciton for process setRenderData(processing(data)); }, () => {}); }, (error) => { // callback for failure }); }, [page]); // fetch data only when page changes if (renderData === null) returnnull; return ( <> {/* equals to <React.Fragment> */} <DialogsomeStates={dialogState}/> <Others...
所以对于一个又需要刷新数据,又需要控制对话框,而且获取数据要请求两次 api 的组件,就会变成这个样子(CallBack 版本):
exportdefaultfunctionComponent(props) { let [dialogState, setDialogState] = useState(false); // some states for dialogs let [renderData, setRenderData] = useState(null); // some states for rendering let [page, setPage] = useState(1); // some states which force data refresh useEffect(() => { fetchSomeData("url", {params: "Some Params"}, {config: "Some Configurations"}, (data) => { // callback for success let someProps = getSomeProps(data); fetchSomeData("url2", {params: someProps}, {config: "Some Configurations"}, (data) => { // funciton for process setRenderData(processing(data)); }, () => {}); }, (error) => { // callback for failure }); }, [page]); // fetch data only when page changes if (renderData === null) returnnull; return ( <> {/* equals to <React.Fragment> */} <DialogsomeStates={dialogState}/> <Others...