Javascript Reactjs,当元素位于map()中时无法获取ElementById

Javascript Reactjs,当元素位于map()中时无法获取ElementById,javascript,reactjs,Javascript,Reactjs,我在reactjs上遇到了一个问题 我需要将屏幕高度与div进行比较,以设置其最大宽度 屏幕大小没有问题,问题是我要检查的div在地图中。因此,此行始终返回null: componentDidMount() { test2 = document.getElementById("coucou"); console.log(test2); } 指的是: render() { return ( <div> {this.props.data.map(

我在reactjs上遇到了一个问题

我需要将屏幕高度与div进行比较,以设置其最大宽度

屏幕大小没有问题,问题是我要检查的div在地图中。因此,此行始终返回null:

componentDidMount() {
    test2 = document.getElementById("coucou");
    console.log(test2);
}
指的是:

render() {
  return (
    <div>
      {this.props.data.map((value, i) => {
        return (
          <div key={i}>
            {
              this.state.activeIndex === 0 ?
                  <div id="coucou" style={{width: '75%', margin: '0 auto'}}>
                      <img 
                          className={"image-detail"}
                          style={{maxWidth: '80%', borderRadius: '12px'}} 
                          src={imgBaseUrl + value['mainImage']}
                      />
                  </div>
            }
          </div>
        );
      }
    </div>
  );
}
因此,我无法访问div的id或类

知道为什么吗?我怎样才能接触到这些元素

注:代码显示是整体的一部分,地图处理其他条件。尽管如此,我还是检查了它,id对于这个div/图像是唯一的。
但是getElementsByClass=>null的问题也是一样的,React在渲染到真实DOM之前处理虚拟DOM,因此除非在调用ReactDOM.render之后执行测试语句,否则结果是可以预期的,否则元素仍然在React的虚拟DOM中

假设您将测试代码放置在正确的位置,例如,您是否尝试直接记录this.props.data?在您的情况下,它可能只是空的


此外,您的代码也有一个小问题,因为Arraymap生成一个值数组,可以有多个id为coucou的div,如果您不遵循最佳实践并使用

并通过this.couref访问

还请注意,您不需要将静态字符串用大括号括起来-className=image detail就可以了


此外,将数组索引指定为循环中的键也是一种不好的做法-尝试使用该项特有的东西,例如ID,它不会根据数组的顺序而改变。

“知道为什么吗?”–因为元素必须是DOM的一部分,才能通过document.getElementById进行选择。您在componentDidMount中尝试过它吗?我的坏小子,我没有写它,但是的,它来自componentDidMount!另外,为什么不使用react ref而不是ID呢?您也可以接受我所说的另一部分,并用className替换ID;这个.props.data确实是空的。渲染后如何执行调用?我认为这是事实的组成部分。我当时在你的问题评论中没有看到你的精确性。嘿,多米尼克!非常感谢你。由于我是一个人工作,我非常感谢这种反馈。我没有使用ref的原因是因为我得到了相同的结果。所以现在我尝试了和你在这里提出的相同的ref-syntax。。然后在componentDidMount中调用它,或者在fb文档中描述的另一个回调函数中调用它,但是我在this.coucouRef上一直有一个未定义的。
return (
  <div>
    {this.props.data.map((value, i) => {
      return (
        <div key={i}>
          {
            this.state.activeIndex === 0 ?
                <div ref={n => (this.coucouRef = n)} style={{width: '75%', margin: '0 auto'}}>
                    <img 
                        className="image-detail"
                        style={{maxWidth: '80%', borderRadius: '12px'}} 
                        src={imgBaseUrl + value['mainImage']}
                    />
                </div>
          }
        </div>
      );
    }
  </div>
);