簡體   English   中英

事件未觸發 static 標記在 reactJS

[英]Event not firing for static mark up in reactJS

我有一個簡單的待辦事項列表,其中每個任務都是通過單擊或輸入添加的

   <div className="taskControll">
      <input type='text' name="newTask" id="newTask" onKeyDown={(e)=>{keyCheck(e)}}/> 
      <input type='button' name="addTask" value='add' onClick = {addTask}  /> 
  </div>

‘addTask’向taskController div添加任務,function如下

function addTask(){

    let task = document.getElementById("newTask").value;
    document.getElementById("newTask").value = '';
    let taskViewer = document.getElementById("tasks");
    const data = renderToStaticMarkup
                                  (
                                  <div><span>{task}</span>                                        
                                    <input type='checkbox' name="doneTask" id = {task} value='done' onClick={(e)=>{strikeTask(e)}}/> 
                                  <br></br></div>);
    taskViewer.innerHTML += data;
  

}

我在每個復選框中添加一個 onclick function 'strikeTask',以便在選中復選框時划掉每個任務

 function strikeTask(e){
     console.log(e);
     //do stuff
 }

問題是,雖然方法'keycheck'(在'enter'上調用addTask)和'addTask'都工作得很好我只是無法讓strikeTask方法觸發我已經嘗試了箭頭和匿名function

onClick={(e)=>{strikeTask(e)}}

但如果我這樣做

onClick={strikeTask(this)}

添加任務時,function 會自行觸發,即這被視為對 function 的調用,而不是對其的引用。 當我在瀏覽器中檢查事件時,我還可以看到該事件沒有被添加到復選框中,我懷疑這是因為我使用“renderToStaticMarkup”將任務添加到列表中。 如何讓事件僅在選中復選框時觸發?

復選框需要一個 onChange onChange={(e)=>{strikeTask(e)}}

我知道已經晚了,但我想通了,使用“innerHTML”清空目標 div,然后插入導致事件偵聽器被刪除的新元素。 我能夠使用“insertAdjacentHTML”解決這個問題,因為它可以保持事件監聽器的完整性。 無論如何感謝您的答復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM