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