Javascript 你能解释一下这个反应功能吗?

Javascript 你能解释一下这个反应功能吗?,javascript,reactjs,function,Javascript,Reactjs,Function,这是从电子商务网站产品页面的数据库中获取产品的功能 我正在尝试为登录编写一个类似的函数 你能帮我一下吗?我是新来的 storedProducts = () => { axios.get('http://127.0.0.1:5000/product') .then(res => { const storedProducts = res.data; let tempProducts = []; storedProducts.forEach(

这是从电子商务网站产品页面的数据库中获取产品的功能

我正在尝试为登录编写一个类似的函数

你能帮我一下吗?我是新来的

storedProducts = () => {
  axios.get('http://127.0.0.1:5000/product')
    .then(res => {
      const storedProducts = res.data;
      let tempProducts = [];
      storedProducts.forEach(item => {
        const singleItem = { ...item
        };
        tempProducts = [...tempProducts, singleItem];

      });
      this.setState(() => {
        return {
          products: tempProducts
        };
      });
    })
}


在每次迭代中,storedProduct的当前项被克隆到一个新的对象项中。在下一行中,此单一项将附加到重新分配到tempProducts的新数组中。tempProducts是使用spread运算符创建的全新数组对象。

粘贴的代码是将匿名箭头函数赋值给变量storedProducts

它似乎是从组件的类定义中删除的。组件是React javascript库的构建块,允许通过构建这些组件的树来构建UI,类似于HTML

与React相关的唯一部分是:

this.setState(()=>{
  return {products:tempProducts};
});
它设置组件的状态,这通常会导致组件重新启动——

这整个街区都很奇怪,因为似乎没有必要。它接受一个数组res.data,我知道它是一个数组,因为forEach用于在下面的行中迭代它,这是一个数组方法,并迭代它的项,使用扩展语法const singleItem={…item}创建副本;按字面意思,将新对象指定给singleItem,并将该项的所有属性复制到其中。由于res.data已经是一个数组,因此可以直接使用它来设置组件的状态,如下所示:

this.setState(()=>{
  return { products: res.data };
});

你到底想理解什么?除了设置一些组件状态,这是javascript。是否有更具体的问题和/或问题?storedProduct.forEach下发生了什么?它将所有storedProduct收集到一个数组中。由于storedProducts已经是一个阵列,所以这完全是一种过激行为。它还制作了每个项目的不必要的副本;大量不必要的浅层对象复制扩展语法…感谢您的解释。
this.setState(()=>{
  return { products: res.data };
});