首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于prevState的状态更新失败

基于prevState的状态更新失败
EN

Stack Overflow用户
提问于 2021-01-04 07:34:08
回答 1查看 48关注 0票数 0

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

这是我的状态:

代码语言:javascript
运行
复制
  const [selectType, setType] = useState("");
  const [data, setData] = useState([]);

这是我的自定义钩子,用于获取以前的状态:

代码语言:javascript
运行
复制
  const usePrevious = (value) => {
    const ref = useRef();
    useEffect(() => {
      ref.current = value;
    }, [value]);
    return ref.current;
  };



const prevSelectType = usePrevious(selectType);

这就是我如何获取数据并尝试有条件地将状态设置为初始值的方式:

代码语言:javascript
运行
复制
  const getCategory = async (type) => {
    setType(type);
    if (selectType !== prevSelectType) {
      setData([]);
    }
    const result = await getData(type.toLowerCase());
    setData(result.data);
  };

我的问题是,"prevSelectType“在几秒钟后转到"selectType”,我不能根据这个条件将状态设置为初始值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 07:59:51

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

  1. 不需要自定义钩子来获取以前的状态,可以通过

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

  1. State不同步

setType(type);//在立即更新状态后获取值时,不会得到更新的状态。应将下列内容改为

代码语言:javascript
运行
复制
    if (type !== selectType) { // since selectType will have the previous selectType value 
      setData([]); 
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65559109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档