Javascript 单击按钮时按特殊顺序保存数据

Javascript 单击按钮时按特殊顺序保存数据,javascript,reactjs,Javascript,Reactjs,我创建了一个应用程序,用户可以在其中向我的示例中的特定汽车添加一些注释。用户必须能够添加评论和评价汽车 const-App=()=>{ const[state,setState]=useState({visible:false}); const[myData,setMyData]=useState([]); 常量showModal=()=>{ 设定状态({ 可见:正确 }); }; 常数handleOk=(e)=>{ 设定状态({ 可见:假 }); console.log(“所有数据”,myD

我创建了一个应用程序,用户可以在其中向我的示例中的特定
汽车添加一些注释。用户必须能够添加评论和评价汽车

const-App=()=>{
const[state,setState]=useState({visible:false});
const[myData,setMyData]=useState([]);
常量showModal=()=>{
设定状态({
可见:正确
});
};
常数handleOk=(e)=>{
设定状态({
可见:假
});
console.log(“所有数据”,myData);
};
常数handleCancel=(e)=>{
控制台日志(e);
设定状态({
可见:假
});
};
返回(
开放模态
);

};要使您的场景正常工作,您应该更新
组件,如下所示:

const Data = () => {
  const [cars, setCars] = useState(data);

  const setRate = (category, rate) => {
    const newCars = [...cars];
    let index = newCars.findIndex((c) => c.carCat === category);
    newCars[index] = Object.assign(newCars[index], { rate });

    setCars(newCars);
  };

  const setComment = (category, comment) => {
    const newCars = [...cars];
    let index = newCars.findIndex((c) => c.carCat === category);
    newCars[index] = Object.assign(newCars[index], { comment });

    setCars(newCars);
  };

  return (
    <div>
      {cars.map((i) => {
        return (
          <div key={i.carCat}>
            <span>{i.carCat}</span>
            <SetData
              setRate={(rate) => setRate(i.carCat, rate)}
              setComment={(comment) => setComment(i.carCat, comment)}
            />
          </div>
        );
      })}
    </div>
  );
};

更新1

如何创建注释数组,例如用户添加一条注释并单击OK按钮保存,然后再次打开模式并为该块添加另一条注释,并以这种方式创建注释数组


基本上,您需要进一步了解

这很好,但是如何创建注释数组,例如用户添加一条注释,然后单击
确定
按钮保存,然后再次打开模式并为该块添加另一条注释,并以这种方式创建注释数组。你能帮忙吗?Thanksi尝试
newCars[index]=Object.assign(newCars[index],{comment:[…comment,comment]}),但它会将每个leter作为一条注释保存。如何修复?我有一个问题,为什么,当我打开模式窗口,然后键入注释,在键入注释后立即单击星号,文本消失?谢谢您的帮助,请?
const SetData = ({ setRate, setComment }) => {
  return (
    <div>
      <Rate onChange={setRate} />
      <input
        onChange={(e) => setComment(e.target.value)}
        placeholder="comment"
      />
    </div>
  );
};
<SetData
  setRate={(rate) => setRate(i.carCat, rate)}
  setComment={(comment) => setComment(i.carCat, comment)}
/>