Reactjs 使用React钩子更改父级的状态

Reactjs 使用React钩子更改父级的状态,reactjs,react-hooks,Reactjs,React Hooks,因此,我有一个任务组件,每次任务完成时,我都试图更新父组件Bot中的计数器,Bot保存所有任务。但是,当我同时单击所有任务时,状态(completeTasks)会波动,而不是严格地增加 我的任务组件,其中我调用父函数incrementCompletedTasks(每个任务需要不同的时间来完成,这就是为什么我有setTimeout): const Task=({Task,eta,onTaskCompletion})=>{ 常量[isLoading,setLoading]=useState(fals

因此,我有一个任务组件,每次任务完成时,我都试图更新父组件Bot中的计数器,Bot保存所有任务。但是,当我同时单击所有任务时,状态(completeTasks)会波动,而不是严格地增加

我的任务组件,其中我调用父函数incrementCompletedTasks(每个任务需要不同的时间来完成,这就是为什么我有setTimeout):

const Task=({Task,eta,onTaskCompletion})=>{
常量[isLoading,setLoading]=useState(false)
常量[isCompleted,setCompleted]=useState(false)
常数秒=eta/1000;
const taskCompletion=()=>{
onTaskCompletion()
设置加载(错误)
设置已完成(真)
}
const handleTaskCompletion=()=>{
设置加载(真)
设置超时(任务完成,eta)
}
返回(
{
isCompleted?

{task}{seconds}{seconds>1?”秒:“second”}

{task}{seconds}{seconds>1?”秒:“second”}

} { 完成了吗 (正在加载?: 完成任务) } ); }
我的Bot组件,其completeTasks钩子应在每次任务调用时递增:

const Bot = ({ name, type }) => {
  const [completeTasks, setCompleteTasks] = useState(0)

  const incrementCompleteTasks = () => {
    setCompleteTasks(completeTasks+1)
  }

  return (
    <div className="Bot">
      <header>
        <h2 className="botHeader">{name}</h2>
        <h3 className="botHeader">{type}</h3>
        <h4 className="botHeader">Completed Tasks: {completeTasks}</h4>
      </header>
      {
        botData[type].tasks.map(t => <Task task={t.task} eta={t.eta} key={t.eta} onTaskCompletion={incrementCompleteTasks}/>)
      }
    </div>
  );
}
constbot=({name,type})=>{
常量[completeTasks,setCompleteTasks]=useState(0)
const incrementCompleteTasks=()=>{
设置完成任务(完成任务+1)
}
返回(
{name}
{type}
已完成的任务:{completeTasks}
{
botData[type].tasks.map(t=>)
}
);
}

您可以在沙箱中共享您的代码吗?它都在Bot文件夹中,如果它不起作用,请告诉我,我以前从未使用过它,我将它用于prev=>prev+1。我不知道那是一件事。非常感谢。您希望已完成的任务增加值吗?
const Bot = ({ name, type }) => {
  const [completeTasks, setCompleteTasks] = useState(0)

  const incrementCompleteTasks = () => {
    setCompleteTasks(completeTasks+1)
  }

  return (
    <div className="Bot">
      <header>
        <h2 className="botHeader">{name}</h2>
        <h3 className="botHeader">{type}</h3>
        <h4 className="botHeader">Completed Tasks: {completeTasks}</h4>
      </header>
      {
        botData[type].tasks.map(t => <Task task={t.task} eta={t.eta} key={t.eta} onTaskCompletion={incrementCompleteTasks}/>)
      }
    </div>
  );
}