#javascript #reactjs
#язык JavaScript #реагирует на
Вопрос:
По какой-то причине этот код работает:
const Task = ({task, onDelete, onToggle}) =gt; { return ( lt;div className="task" onClick={() =gt; onToggle(task.id)}gt; lt;/divgt;
Но это не так:
const Task = ({task, onDelete, onToggle}) =gt; { return ( lt;div className="task" onDoubleClick={() =gt; onToggle(task.id)}gt; lt;/divgt;
Остальная часть кода такова, если это поможет:
App.js
const toggleReminder = (id) =gt; { console.log("double click!", id); } return ( lt;div className="container"gt; lt;Header title="Task Tracker"/gt; {tasks.length gt; 0 ? ( lt;Tasks tasks={tasks} onDelete={deleteTask} onToggle={toggleReminder}/gt; ) : ("No Tasks to show") }
Tasks.js
const Tasks = ({ tasks, onDelete, onToggle }) =gt; { return ( lt;gt; {tasks.map((task, index) =gt; ( lt;Task key={index} task={task} onDelete={onDelete} onToggle={onToggle} /gt; ))} lt;/gt; ) }
И Task.js
const Task = ({task, onDelete, onToggle}) =gt; { return ( lt;div className="task" onDoubleClick={() =gt; onToggle(task.id)}gt; lt;h3gt;{task.text} lt;FaTimes style={{color:"red", cursor: 'pointer'}} onClick={()=gt; onDelete(task.id)}/gt; lt;/h3gt; lt;pgt;{task.day}lt;/pgt; lt;/divgt; ) }
Я копировал все из учебника, и я действительно не понимаю проблемы. С onClick это работает просто отлично. Работают ли они по-другому? Я видел аналогичный вопрос, но не понял ответа Спасибо!
Комментарии:
1. Вы не можете зарегистрировать щелчок и двойной щелчок в одном и том же компоненте, DOM не может отличить, будет ли это щелчок или двойной щелчок, поэтому он всегда будет использовать onClick, а не onDoubleClick
2. Я не ставил их обоих одновременно. Только с onClick это работает, а ТОЛЬКО с onDoubleClick-нет
3. Ваш Task.js файл содержит их оба в вашем примере кода