在ReactJS中编辑多个输入

在ReactJS中编辑多个输入,reactjs,Reactjs,我已经开始学习React并尝试制作一本家用书,它基于MDN React教程()中Todo应用程序的代码 我被困在编辑输入的条目。与todo应用不同的是,我想同时编辑多个输入,并用输入的输入更新这些输入 我很确定editTask()函数中有错误,但我无法发现错误!我真的很感谢你的帮助 这就是我的代码的样子 import React, { useState } from "react"; export default function Entry(props) { const

我已经开始学习React并尝试制作一本家用书,它基于MDN React教程()中Todo应用程序的代码

我被困在编辑输入的条目。与todo应用不同的是,我想同时编辑多个输入,并用输入的输入更新这些输入

我很确定editTask()函数中有错误,但我无法发现错误!我真的很感谢你的帮助

这就是我的代码的样子

import React, { useState } from "react";

export default function Entry(props) {

const[newState, setNewState] = useState({
  entry: "",
  status: "",
  betrag: "",
  kategorie: "",
  datum: ""
});

function handleChange(e) {      
  const value = e.target.value;

  setNewState({
    ...newState,
    [e.target.name]: value
  });
}

function handleSubmit(e) {
  e.preventDefault();
  props.editTask(props.id, newState);
  setNewState("");
  setEditing(false); 
  console.log("newState: " + newState);
  console.log("setNewState: " + setNewState);
  console.log("props.id: " + props.id);
}

return (
  <form onSubmit={handleSubmit}>
    <input 
      id={props.id}
      type="text"
      name="entry"
      value={newState.entry}
      onChange={handleChange}
    />
    <input 
      id={props.id}
      type="text"
      name="status"
      value={newState.status}
      onChange={handleChange}
    />
    <input 
      id={props.id}
      type="text"
      name="betrag"
      value={newState.betrag}
      onChange={handleChange}
    />
    <input 
      id={props.id}
      type="text"
      name="kategorie"
      value={newState.kategorie}
      onChange={handleChange}
    />
    <input 
      id={props.id}
      type="text"
      name="datum"
      value={newState.datum}
      onChange={handleChange}
    />

    <br></br>
    <button
      type="button"
      onClick={() => setEditing(false)}
    >
      Cancel
    </button>
    <button
      type="submit"
    >
      Save
    </button>
  </form>
);
}
import React,{useState}来自“React”;
导出默认功能条目(道具){
const[newState,setNewState]=useState({
条目:“”,
地位:“,
betrag:“,
kategorie:“,
数据:“”
});
函数handleChange(e){
常量值=e.target.value;
setNewState({
…新闻状态,
[e.target.name]:值
});
}
函数handleSubmit(e){
e、 预防默认值();
props.editTask(props.id,newState);
setNewState(“”);
设置编辑(假);
console.log(“newState:+newState”);
log(“setNewState:+setNewState”);
控制台日志(“props.id:+props.id”);
}
返回(


设置编辑(假)} > 取消 拯救 ); }
App.js

import React, { useState } from "react";
import { nanoid } from "nanoid";
import Entry from "./components/Entry";
import Form from "./components/Form2";

function App(props) {

  function editTask(id, newState) {
    const editedTaskList = tasks.map(task => {
      if (id === task.id) {
        //
        const editTask = { id: "todo-" + nanoid(), name: newState.entry, ausgabe_einnahme: newState.status, betrag: newState.betrag, kategorie: newState.kategorie, datum: newState.datum};
        return {...task, editTask}
      }
      return task;
    });
  
    setTasks(editedTaskList);
  }

  const [tasks, setTasks] = useState(props.tasks);
  const taskList = tasks.map(task => (
        <Entry 
          id={task.id}
          name={task.name}
          completed={task.completed}
          key={task.id}
          toggleTaskCompleted={toggleTaskCompleted}
          deleteTask={deleteTask}
          editTask={editTask}

          ausgabe_einnahme={task.ausgabe_einnahme}
          betrag={task.betrag}
          kategorie={task.kategorie}
          datum={task.datum}
        />
      )
  );
  
  return (
    <div className="bilanzo">
      <h1>Bilanzo</h1>
      <div className="overview">
      <p>
        <span><strong>Einnahmen & Ausgaben!</strong></span>
      </p>
      <h2 id="list-heading">{headingText}</h2>
        <ul className="entry">
          {taskList}
        </ul>
      </div>
      <Form addTask={addTask} />
    </div>  
  );
}

export default App;
import React,{useState}来自“React”;
从“nanoid”导入{nanoid};
从“/components/Entry”导入条目;
从“/components/Form2”导入表单;
功能应用程序(道具){
函数editTask(id,newState){
const editedTaskList=tasks.map(task=>{
if(id==task.id){
//
const editTask={id:“todo-”+nanoid(),名称:newState.entry,ausgabe_einnahme:newState.status,betrag:newState.betrag,kategorie:newState.kategorie,datum:newState.datum};
返回{…任务,编辑任务}
}
返回任务;
});
设置任务(编辑任务列表);
}
const[tasks,setTasks]=useState(props.tasks);
const taskList=tasks.map(task=>(
)
);
返回(
比兰佐

Einnahamen&Ausgaben!

{headingText}
    {taskList}
); } 导出默认应用程序;
我不确定:

return {...task, editTask}
是的,也许应该是:

return {...task, ...editTask}

第一个代码段中的
setEditing
是什么?它在任何地方都没有定义。你能再解释一下你的想法吗?有什么错误,意外的行为吗?是的!成功了!多谢各位!但这三个点到底意味着什么呢?我认为这就是所谓的扩展语法:;基本上,我认为这是一种给你一件事的所有条目的方式;在这种情况下,我们会说“将editTask的所有条目添加到我正在创建的对象中”。