如果当前状态不等于以前的状态,则需要将状态更新为初始值。
这是我的状态:
const [selectType, setType] = useState("");
const [data, setData] = useState([]);这是我的自定义钩子,用于获取以前的状态:
const usePrevious = (value) => {
const ref = useRef();
useEffect(() => {
ref.current = value;
}, [value]);
return ref.current;
};
const prevSelectType = usePrevious(selectType);这就是我如何获取数据并尝试有条件地将状态设置为初始值的方式:
const getCategory = async (type) => {
setType(type);
if (selectType !== prevSelectType) {
setData([]);
}
const result = await getData(type.toLowerCase());
setData(result.data);
};我的问题是,"prevSelectType“在几秒钟后转到"selectType”,我不能根据这个条件将状态设置为初始值。
发布于 2021-01-04 07:59:51
好的,我在这里看到了几个修复方案
setState((prevState) => ({ if(prevState !== ==)});
setType(type);//在立即更新状态后获取值时,不会得到更新的状态。应将下列内容改为
if (type !== selectType) { // since selectType will have the previous selectType value
setData([]);
}https://stackoverflow.com/questions/65559109
复制相似问题