在React中,我需要从本地存储中获取状态,然后根据该状态有条件地设置另一个状态

贝斯特矿
const  [isDone, setIsDone] = useState({
      customer: undefined, //need to set another state based on this state
      shipping: undefined,
      payment: undefined,
    });

    //Set values of isdone on page load from localstorage if exists else set to false
  useEffect(() => {
    setIsDone({
      customer: localStorage.getItem("customer")
      ? localStorage.getItem("customer")
      : false,
      shipping: localStorage.getItem("shipping")
      ? localStorage.getItem("shipping")
      : false,
      payment: localStorage.getItem("payment")
        ? localStorage.getItem("payment")
        : false,
    });

  //if customer section has not been done,set edit clicked to false
    !isDone.customer && setEditClicked({ ...editClicked, customer: true }); //This code block is 
    getting executed evey time,even though state of isDone.customer is set to "true".i confirmed from 
    react dev tools 
     //
      
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

事情是IsDone.customer在本地存储中保存为“ true”,但是此代码仍无法正常工作。我什至使用Boolean方法将其覆盖为boolen,但结果仍然相同。

这是我将数据保存到localstorage.it的方式,我已经检查过了。

const handleSubmit = (event) => {
const name = event.currentTarget.getAttribute("name");

//save isDone to local storage
localStorage.setItem(name, true);
setEditClicked({ ...editClicked, [name]: false });
 };
丹尼斯·普雷西奇

isDone国家将不会被后立即改变setIsDoneuseEffect

最好在内部创建另一个常量 useEffect

useEffect(() => {
    const isDone = {
      customer: localStorage.getItem("customer")
      ? localStorage.getItem("customer")
      : false,
      shipping: localStorage.getItem("shipping")
      ? localStorage.getItem("shipping")
      : false,
      payment: localStorage.getItem("payment")
        ? localStorage.getItem("payment")
        : false,
    }

    setIsDone(isDone);

    !isDone.customer && setEditClicked({ ...editClicked, customer: true });

  }, []);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据React功能组件中的状态变量有条件地设置className

来自分类Dev

仅当该表单组中的另一个特定表单控件具有值时,才根据需要有条件地设置特定表单控件(较大表单组的一部分)

来自分类Dev

根据使用中的prevState有条件地设置状态效果导致指数重新渲染

来自分类Dev

根据ReactJS中的变量有条件地设置复选框状态

来自分类Dev

根据另一个数据帧有条件地替换数据帧中的单元

来自分类Dev

根据另一个值有条件地映射 LINQ 中的新属性

来自分类Dev

我如何有条件地计算本地反应的状态之一?

来自分类Dev

有条件地根据另一个变量设置一个变量的值

来自分类Dev

如何在React中从另一个组件设置一个组件的状态

来自分类Dev

MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

来自分类Dev

根据另一个键的值有条件地打印值

来自分类Dev

有条件地设置引导按钮的禁用状态

来自分类Dev

有条件地选择行并有条件地插入到另一个表中

来自分类Dev

两个返回 observable 的函数;需要根据另一个的结果有条件地调用一个

来自分类Dev

根据状态有条件地设置Angular的ng-class

来自分类Dev

React 组件可以渲染存储在其状态中的另一个组件吗?

来自分类Dev

我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

来自分类Dev

Angular.js如何根据另一个列表中是否存在重复元素来有条件地检查复选框

来自分类Dev

如何在另一个文件中获取组件的状态 react native

来自分类Dev

如何基于MongoDB聚合中数组内的另一个字段有条件地为父字段设置值?

来自分类Dev

我的按钮无法更改另一个React Native组件中的状态

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

来自分类Dev

有条件地将数组作为变量添加到另一个数组中

来自分类Dev

R-有条件地用另一个数据框中的值替换值

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

来自分类Dev

有条件地在Scala / Spark的CSV文件中映射行,以生成另一个CSV文件

来自分类Dev

有条件地重定向到另一个页面,并通过PHP中的POST发送参数

来自分类Dev

从另一个组件 React js 设置状态

来自分类Dev

我如何有条件地将一个GUI连接到另一个GUI?

Related 相关文章

  1. 1

    根据React功能组件中的状态变量有条件地设置className

  2. 2

    仅当该表单组中的另一个特定表单控件具有值时,才根据需要有条件地设置特定表单控件(较大表单组的一部分)

  3. 3

    根据使用中的prevState有条件地设置状态效果导致指数重新渲染

  4. 4

    根据ReactJS中的变量有条件地设置复选框状态

  5. 5

    根据另一个数据帧有条件地替换数据帧中的单元

  6. 6

    根据另一个值有条件地映射 LINQ 中的新属性

  7. 7

    我如何有条件地计算本地反应的状态之一?

  8. 8

    有条件地根据另一个变量设置一个变量的值

  9. 9

    如何在React中从另一个组件设置一个组件的状态

  10. 10

    MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

  11. 11

    根据另一个键的值有条件地打印值

  12. 12

    有条件地设置引导按钮的禁用状态

  13. 13

    有条件地选择行并有条件地插入到另一个表中

  14. 14

    两个返回 observable 的函数;需要根据另一个的结果有条件地调用一个

  15. 15

    根据状态有条件地设置Angular的ng-class

  16. 16

    React 组件可以渲染存储在其状态中的另一个组件吗?

  17. 17

    我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

  18. 18

    Angular.js如何根据另一个列表中是否存在重复元素来有条件地检查复选框

  19. 19

    如何在另一个文件中获取组件的状态 react native

  20. 20

    如何基于MongoDB聚合中数组内的另一个字段有条件地为父字段设置值?

  21. 21

    我的按钮无法更改另一个React Native组件中的状态

  22. 22

    AngularJS模板:如何有条件地将标签包装在另一个标签中

  23. 23

    有条件地将数组作为变量添加到另一个数组中

  24. 24

    R-有条件地用另一个数据框中的值替换值

  25. 25

    AngularJS模板:如何有条件地将标签包装在另一个标签中

  26. 26

    有条件地在Scala / Spark的CSV文件中映射行,以生成另一个CSV文件

  27. 27

    有条件地重定向到另一个页面,并通过PHP中的POST发送参数

  28. 28

    从另一个组件 React js 设置状态

  29. 29

    我如何有条件地将一个GUI连接到另一个GUI?

热门标签

归档