NodeJS 如何使用Axios从节点获取对象数组

pw136qt2  于 2022-11-29  发布在  Node.js
关注(0)|答案(1)|浏览(169)

我需要将响应中的数据存储在state中。一旦进行了axios调用并返回了一些数据,就会调用useEffect函数,并导致任务列表数组被填充。然后可以对其结果进行迭代并在前端显示。

import{ useEffect, useState} from 'react'
import axios from 'axios';

function Todo() {
  const [toDos,setToDos] =useState([])
  function HandleSubmit(e) {
    e.preventDefault();

    let request ={

      list : toDos
  }

  let taskList = axios.post('http://localhost:8080/Todo',request)
        .then(resp=>{
            alert(resp.data.message);
        })
        .catch( err=>{
            console.log(err);
        })

        const [tasks,setTasks] = useState([]);
        useEffect(()=>{
          setTasks(taskList);
        },[taskList]);
    
      }
  
  return (
  
      <div >
        <h1>ToDo List</h1>
        <form onSubmit={HandleSubmit}>
        <input type="text" placeholder=" Add item..." name="list" value={toDos} onChange={(e)=>setToDos(e.target.value)}/>
        {tasks.map(()=>{
          return(
            <div>
              <h1>{tasks}</h1>
            </div>
          )
        })}
        <button id="btn" type="submit">Add</button>
        </form>

      </div>

  );
  }


export default Todo;

节点码
第一次
这是一个错误,任何人都可以帮助

q1qsirdb

q1qsirdb1#

在组件级定义状态和并删除useEffect。不要在功能级定义状态和效果

function Todo() { 
   const [tasks,setTasks] = useState([]);
 

   .....

然后设置then中的值

axios.post('http://localhost:8080/Todo',request)
    .then(resp=>{
       setTasks(resp.data.message);
    })
    .catch( err=>{
        console.log(err);
    })   

  }

相关问题