在React Redux中,useSelector是一个用于从Redux store中获取状态的钩子函数。它会在组件渲染时被调用,当Redux store中的状态发生变化时,useSelector会重新执行,导致多次调用。
要停止useSelector的多次调用,可以使用React Redux提供的shallowEqual函数或reselect库。
import { useSelector, shallowEqual } from 'react-redux';
const MyComponent = () => {
const data = useSelector(state => state.data, shallowEqual);
// 组件渲染逻辑
};
首先,安装reselect库:
npm install reselect
然后,在组件外部创建一个选择器函数,并使用createSelector创建可记忆化的选择器:
import { useSelector } from 'react-redux';
import { createSelector } from 'reselect';
const selectData = state => state.data;
const memoizedSelector = createSelector(
selectData,
data => data
);
const MyComponent = () => {
const data = useSelector(memoizedSelector);
// 组件渲染逻辑
};
使用shallowEqual函数或reselect库可以有效地停止useSelector的多次调用,提高性能并避免不必要的重新渲染。
领取专属 10元无门槛券
手把手带您无忧上云