例如,假设我有一个用于发出 API 请求的钩子:function useApi(...) { const [state, setState] = useState({ fetching: false }); useEffect(() => { setState({ fetching: true }); fetch(...) .then(() => setState({ fetching: false })); }, [...]); return { fetching: state.fetching };}有时, 的状态useApi会影响渲染:function Foo() { const { fetching } = useApi(...); if (fetching) { return 'Loading'; } return 'Foo';}其他时候,它不会影响渲染:function Bar() { useApi(...); return 'Bar';}当setStateinuseApi不影响渲染时,是否可以避免重新渲染组件?我知道这不会对性能产生太大影响,但很高兴知道这是否可行。
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您可以创建一个boolean标志来确定是否要useApi及时更改挂钩状态。
const { fetching } = useApi(..., flag);
然后是内useApi钩:
function useApi(..., flag) {
const [state, setState] = useState({ fetching: false });
useEffect(() => {
flag && setState({ fetching: true });
fetch(...)
.then(() => {
flag && setState({ fetching: false }));
// do other stuff
});
}, [...]);
return { fetching: state.fetching };
}
添加回答
举报
0/150
提交
取消