无法根据prevState更新状态



如果当前状态不等于以前的状态,我需要将状态更新为初始值。

这是我的状态:

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;几秒钟后我不能根据这个条件将状态设置为初始值

好的,我在这里看到了几个修复

  1. 无需自定义挂钩即可通过接收到以前的状态

    setState((prevState(=>({if(prevState!==state(}));

  2. 状态不同步

setType(type(;//在立即更新state没有得到更新的状态。以下内容应更改为

if (type !== selectType) { // since selectType will have the previous selectType value 
setData([]); 
}

最新更新