【问题标题】:Adding data to Array inside an object using React Hook使用 React Hook 将数据添加到对象内的 Array
【发布时间】:2019-04-14 05:29:50
【问题描述】:

我对如何在 React 中使用 setState by hook 将数组数据添加到对象内的数组列表感到困惑。有人可以帮我解决这个问题吗? 下面是我的代码,每次我控制台日志它总是返回空数组。

import React, { useState } from 'react';

const Main = props => {
  const [state, setState] = useState({
    noteArray: [],
    noteText: '',
  });


  const addNote = () => {
    if(state.noteText){
      var d = new Date();
      let x = {
        'date': d.getFullYear() + 
        "/" + (d.getMonth() + 1 ) +
        "/" + d.getDate(),
        'note': state.noteText
      }

      setState({...state, noteArray: x});

      console.log(state.noteArray);
    }
  }

   .......................the rest of code
}

【问题讨论】:

    标签: arrays reactjs immutability react-hooks


    【解决方案1】:

    基本上你做错的是你正在覆盖你的数组而不是向它添加新值。您可以使用以下方法轻松完成此操作:-

    import React, { useState } from 'react';
    
    const Main = props => {
      const [state, setState] = useState({
        noteArray: [],
        noteText: '',
      });
    
    
      const addNote = () => {
        if(state.noteText){
          var d = new Date();
          let x = {
            'date': d.getFullYear() + 
            "/" + (d.getMonth() + 1 ) +
            "/" + d.getDate(),
            'note': state.noteText
          }
    
          setState({...state, noteArray: [...state.noteArray, x]});
    
          console.log(state.noteArray);
        }
      }
    
       .......................the rest of code
    }
    

    【讨论】:

    • 你的代码,陷入死循环,下面是更新的
    • @ukiyakimura 您是要重置阵列还是要附加到阵列中?
    • @solanki... 你能解释一下这将如何进入无限循环吗?已经在本地测试过,效果很好
    • 我正在尝试添加它@YashGadle
    • 如何使用 setState 强制状态立即更新?,在组件首先重新渲染之前,它仍然不会更改值。 @Yash Gadle
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多