2016-11-08 44 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和其他所有反应属性都可用,您可以使用其中任何属性。

相关问题