Reactjs 如何从react JS中的类div中提取id,以便我可以将div id的值分配给代码中的变量

Reactjs 如何从react JS中的类div中提取id,以便我可以将div id的值分配给代码中的变量,reactjs,Reactjs,我正在处理react JS,我想显示我们所在的div的名称。例如,在下面的代码中,我希望程序在“Hello Pooja We in div message box”页面上显示,我已经编写了以下代码,但它似乎不起作用 import React from 'react'; import ReactDOM from 'react-dom'; class Hello extends React.Component { render () { return ( <div

我正在处理react JS,我想显示我们所在的div的名称。例如,在下面的代码中,我希望程序在“Hello Pooja We in div message box”页面上显示,我已经编写了以下代码,但它似乎不起作用

import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  render ()  {
    return (
      <div id='message-box'>
         Hello {this.props.name} We are in div {this.currentTarget.id}
      </div>
    )
  }
}
从“React”导入React;
从“react dom”导入react dom;
类Hello扩展了React.Component{
渲染(){
返回(
你好{this.props.name}我们在div{this.currentTarget.id}
)
}
}

我不知道你是否想要这样的结果,但你可以通过参考来实现

function Hello() {
 const [parentDiv, setParentDiv] = useState();
 const ref = useRef();

 useEffect(() => {
   setParentDiv(ref.current.id);
 });

  return (
     <div id='message-box' ref={ref}>
        Hello! We are in div {parentDiv}
     </div>
  )

}
函数Hello(){ const[parentDiv,setParentDiv]=useState(); const ref=useRef(); useffect(()=>{ setParentDiv(参考当前id); }); 返回( 你好!我们在div{parentDiv} ) } 类组件

class Hello extends React.Component {
 state = {
   parentDiv: ""
  };

  ref = React.createRef();

  componentDidMount() {
   this.setState({
     parentDiv: this.ref.current.id
   });
  }

  render() {
     return (
       <div id="message-box" ref={this.ref}>
          Hello! We are in div {this.state.parentDiv}
        </div>
    );
  }
 }
类Hello扩展了React.Component{
状态={
parentDiv:“
};
ref=React.createRef();
componentDidMount(){
这是我的国家({
parentDiv:this.ref.current.id
});
}
render(){
返回(
你好!我们在div{this.state.parentDiv}
);
}
}
从“React”导入React;
从“react dom”导入react dom;
类Hello扩展了React.Component{
你好(id)
{
返回(
你好{this.props.name}我们在div{id}
)
}
渲染(){
返回(
this.hello({id:messagebox})
) 
}
}

您可以尝试这样的方法

import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  componentDidMount() {
    const node = ReactDOM.findDOMNode(this);
    console.log(node.id);
  }

  render ()  {
    return (
      <div id='message-box'>
         Hello {this.props.name} We are in div {this.currentTarget.id}
      </div>
    )
  }
}
从“React”导入React;
从“react dom”导入react dom;
类Hello扩展了React.Component{
componentDidMount(){
const node=ReactDOM.findDOMNode(this);
console.log(node.id);
}
渲染(){
返回(
你好{this.props.name}我们在div{this.currentTarget.id}
)
}
}

我希望这会有所帮助。

如果您像这样声明div
您已经知道了id。我不确定您为什么需要这个逻辑

正如@mstoJS所提到的,您可以使用
refs
ref
variable
用于dom元素仅在组件安装到dom后设置

这里的技巧是强制第二个渲染显示ref的值

您可以运行下面的代码段来查看结果

类Hello扩展了React.Component{
建造师(道具){
超级(道具);
this.myRef=React.createRef();
}
componentDidMount(){
这个.forceUpdate();
}
render(){
控制台日志(“呈现”);
返回
你好{
这是我的名字
} 
我们在驾驶室{
this.myRef.current?this.myRef.current.id:“
} <
/div>
}
}
ReactDOM.render(,document.getElementById(“root”)


您需要为
div
绑定一个
事件
,然后您可以获得
id
。另一种方法是分配一个带有
id
变量
,然后在两个位置进行渲染。您能解释一下我们如何为div绑定事件吗?请参阅本文-感谢您的建议,但我想使用类组件而不是功能组件来实现解决方案我添加了类组件解决方案。:)如果我们在代码中添加了两个以上的div,并且它们都有不同的id,那么这段代码也会运行吗谢谢你的建议,但是我想知道如何使用render函数中div的id。你的建议是我在render函数之外做一个div,这违背了问题的目的。你能解释一下为什么你使用{this.myRef.current?this.myRef.current.id:“}而不是简单的{this.myRef.current.id}我用它来打开带有特定id的手风琴吗(url包含特定id和与手风琴id匹配的id)你所建议的方法会让网页无限循环。我猜COmponentDidMount会让render方法再次被调用,而againcomponentDidMount只会运行一次,除非它从dom中卸载。你可以用可复制的代码发布新问题,或者在允许的情况下编辑问题。
import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  componentDidMount() {
    const node = ReactDOM.findDOMNode(this);
    console.log(node.id);
  }

  render ()  {
    return (
      <div id='message-box'>
         Hello {this.props.name} We are in div {this.currentTarget.id}
      </div>
    )
  }
}