2016-11-08 91 views
0

我正在學習ReactJS並嘗試console.log我的ID時,複選框被選中。我嘗試了多種方法來做到這一點,我得到一個錯誤,未定義或爲空。呈現時,span標籤確實有自己的id。我如何從函數中引用它?我的ID一直返回null

import React from "react"; 
import * as ToDoAction from "../actions/ToDoAction"; 

export default class ToDoLi extends React.Component{ 

    constructor(){ 
     super(); 
    } 

    deleteToDo(){ 
     let id = document.getElementById('id'); 
     console.log('I am here at ' + id); 
    } 

    render(){ 

     return (
      <div> 
       <li onChange={this.deleteToDo.bind(this)}><input type="checkbox"/><span id={this.props.id} className="m-l-10">{this.props.text}</span></li> 
      </div> 
      ) 
    } 
} 
+1

如何渲染這個'ToDoLi'組件? PS:取決於你需要做什麼 - 你必須使用'ref'或者只是從'props'中提取數據,但絕對不是'document.getElementById' – zerkms

+0

@zerkms我沒有意識到我可以提取道具從功能。如果您將答案添加爲答案,我會將其標記爲正確。 – Mike

回答

1

爲什麼你找不到的元素:最有可能的id屬性值未設置爲id字面上。確認您需要提供如何渲染此組件。

但這種做法非常沮喪,一個人不應該亂用DOM直接。

你應該這樣做,而不是:

  1. 如果你真的需要一些理由來獲取DOM元素 - 學習如何使用refhttps://facebook.github.io/react/docs/refs-and-the-dom.html

  2. 或者你可能想探索通過傳遞給處理程序的事件。爲此宣佈您的處理程序爲deleteToDo(e)並檢查e

  3. 否則 - this.props和其他所有反應屬性都可用,您可以使用其中任何屬性。

相關問題