【发布时间】:2021-03-29 12:56:43
【问题描述】:
我正在使用SWR
在我的代码中,我使用两者的交汇点,如下所示
const vehiclesStates = useSelector(({ vehiclesStates: state }) => state); // REDUX
const response = useFetch("/vehicles/states") // SWR
const dispatch = useDispatch(); // REDUX
// REDUX
useEffect(() => {
if(response.data) dispatch(VehiclesStatesActions.setVehiclesStates(response.data.result))
}, [response.data, dispatch]);
if(response.error) return <div>ERROR - {response.error.toString()}</div> // SWR
else if(!response.data) return <div>LOADING</div> // SWR
// If there is a return I render my component
return (<></>)
在上面的这段摘录中,我使用我使用 SWR(与 axios 集成)返回的数据在 redux 中设置了我的组件状态。 这样,在需要使用相同数据的任何其他组件中,我只使用 redux 的 useSelect 导入它。
这边
const vehiclesStates = useSelector(({ vehiclesStates: state }) => state);
我发现它比通过在每个想要使用该数据的组件上调用 useFetch 来使用 SWR 更实用。
我的问题是:使用这种方式是正确的方式,还是会影响性能或其他什么?
提前致谢
【问题讨论】:
-
为什么要使用带有 SWR 的 redux? Swr 为您处理所有缓存工作。如果您需要本地状态管理。我建议您使用 API 上下文。 Redux 会给你带来更多的复杂性。
-
我之前使用了上下文,但是使用 redux 组织和存储结构我感觉更舒服:P
标签: javascript reactjs typescript react-redux swr