reactjs - 数组没有在 useState Hook 中更新?

标签 reactjs chart.js react-hooks

我有一个这样的对象数组

const array = [
 {
  age: 13,
  name: "Housing"
  },
  {
  age: 23
  name: "Housing"
  }
]

我想使用这个数组来创建图表,所以我需要从 names 创建两个数组和 ages .然后我想把它作为 Prop 传递给另一个组件

到目前为止,我在我的父组件中提出了这个
const [names, setNames] = useState([]);
  useEffect(() => {
    createArray();
  }, []);

const createArray = () => {
    if (contentLoading) {
      const newNames= array.map((item) => item.name);
      setNames([...names, newNames]);
    }
  };

这里的问题是 newNames正在创建,但是当我用钩子(Hook) setNames 设置它时, names没有更新,还是空的。我不确定我做错了什么。
所有的帮助将不胜感激。

最佳答案

使用钩子(Hook)更新状态时,最好使用回调。

尝试更新您的代码:

setNames(prevNames => [...prevNames, ...newNames])

这与 prevState 的工作方式相同。与 setSate() 合作过.

对于您的解决方案,您可以在 useState() 中设置初始状态:
const array = [
  {
    age: 13,
    name: "Housing"
  },
  {
    age: 23,
    name: "Housing"
  }
];

const [names, setNames] = useState(() => array.map(item => item.name));

useEffect(() => {
  console.log(names);
}, []);

关于reactjs - 数组没有在 useState Hook 中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499455/

相关文章:

javascript - 异步/等待与同步功能改变 react 状态

reactjs - React 三纤 - Tween Camera

javascript - 类似直方图的图表,具有强度彩色列和每个箱的不透明度来显示强度

javascript - Django 使用 ChartJS 显示图表

javascript - 在输入元素上键入时我的状态没有更新

javascript - 在React中读取Firestore子集合数据-如何在查询的子集合中设置父ID

javascript - 使输入建议控件随输入一起移动

javascript - 在组件属性更改时触发 CSS 转换

javascript - 在条形图和折线图上具有双轴的 Chart.js

javascript - 当只有一个 effect 的 deps 发生变化,而不是其他的时,React useEffect Hook