以下是国家维护的所有内容,

  const [name, setName] = useState('');
  const [email, setEmail] = useState('');
  const [phoneno, setPhoneno] = useState('');

  const [data, setData] = useState([]);  //TABLE 1
  const [dataTwo, setDataTwo] = useState([]);  //TABLE 2

需要使用添加按钮创建包含姓名、年龄、邮箱的表格

        <form onSubmit={submitHandler}>
          <div>
            <label>Name</label>
            <input type="text" onChange={nameHandler} value={name}></input>
          </div>
          <div>
            <label>Email</label>
            <input type="email" onChange={emailHandler} value={email}></input>
          </div>
          <div>
            <label>Phone No</label>
            <input type="text" onChange={phoneHandler} value={phoneno}></input>
          </div>
          <div>
            <button type="submit">Add</button>
          </div>
        </form> 

按下ADD按钮时,数据将传输到表1

表1有内容和收件箱按钮,

   <div>
       <h2>Table 1</h2>
     </div>
     <div>
       <ul>
         {data.map((item) => (
           <div>
             <li>
               {item.name} - {item.email} - {item.phoneno}{' '}
               <button onClick={() => deleteTableOneHandler(item)}>
                 Delete
               </button>
             </li>
           </div>
         ))}
       </ul>
     </div> 

const deleteTableOneHandler = (deleteitem) => {
 setData(data.filter((item) => item !== deleteitem));
 setDataTwo((value) => [...value, deleteitem]);
};

按下删除按钮时,表1中的数据将添加到表2中, 表1中的数据被删除

同样,当从表2中删除数据时,数据将添加回表1

      <div>
          <h2>Table 2</h2>
        </div>
        <div>
          <ul>
            {dataTwo.map((item) => (
              <div>
                <li>
                  {item.name} - {item.email} - {item.phoneno}{' '}
                  <button onClick={() => deleteTableTwoHandler(item)}>
                    Delete
                  </button>
                </li>
              </div>
            ))}
          </ul>
        </div>

    const deleteTableTwoHandler = (deleteitem) => {
    setDataTwo(data.filter((item) => item !== deleteitem));
    setData((value) => [...value, deleteitem]);
  };

一切都在按要求工作,只是当我从表2中删除数据时,它没有 按预期回应.

推荐答案

我发现你的代码有什么问题

问题

你的deleteTableTwoHandler中有一个逻辑错误

const deleteTableTwoHandler = (deleteitem) => {
    setDataTwo(data.filter((item) => item !== deleteitem)); // Here is the problem
    setData((value) => [...value, deleteitem]);
};

溶液

const deleteTableTwoHandler = (deleteitem) => {
    setDataTwo(dataTwo.filter((item) => item !== deleteitem)); // data => dataTwo
    setData((value) => [...value, deleteitem]);
};

解释

data包含102中的所有数据,因此当您在103中按下删除按钮时,data.filter也会循环102中的所有数据,即使它不在103中,因此103将包含所有102个值,除了您删除的值,因为它会被过滤.

Reactjs相关问答推荐

导致类型错误的调度不是函数";

条件索引路由

react 副作用循环

可选链和useState挂钩

GoLang有条件地为.js.gz提供服务(如果它存在),否则为.js

在构建或部署Reaction应用程序时出错

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

react -无法获取函数的最新参数值

React-chartjs-2:红色和绿色之间的差距

列表中的每个子项都应该有一个唯一的keyprops .在react 应用程序中

有没有办法在用户离开页面时防止输入模糊?

如何在 nextjs 中单击按钮时动态导入和渲染组件?

如何在对话素材ui中设置边框半径?

react 事件顺序

list 组件未按预期运行

如何使图标适合 react-bootstrap 中的行元素

为什么此代码中的 useState 不更新(文本更新但 id 不更新)?

React Router 6.4CreateBrowserRouter子元素不显示

调用 Jest 和服务方法的问题

如何使用 babel 将 SVG 转换为 React 组件?