如何在React.js中获取另一个组件的元素?

发布于 2021-01-31 22:52:52

我有两个嵌套在App
Component上的CarouselComponent和BannerComponent组件。我想在CarouselComponent中获得BannerComponent中的元素以进行滚动功能。

代码在这里;

-– App.js

....
<App>
   <BannerComponent />
   <CarouselComponent />
</App>
....

-– BannerComponent.js

...
return(
<div className="banner-div" id="banner-div">
</div>
);
...

-– CarouselComponent.js

...
scrollTo() {
  document.getElementById("banner-div") //  This doesn't work
}
...

return(
<a onClick={this.scrollTo}></a>
);

我想知道在所有情况下如何在React js中获取元素。

关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    React ref 将在这里工作。

    class SomeComp extends React.Component{
    
    constructor(){
        this.carRef = React.createRef(); //create ref
    }
      render(){
        return(
          <div>
            <App>
              <BannerComponent  carRef={this.carRef}/> //pass ref in Banner Component to attach it to required DOM.
              <CarouselComponent carRef={this.carRef}/> //pass ref to CarouselComponent  to use it
            </App>
          </div>
        )
      }
    }
    

    BannerComponent

    class BannerComponent extends React.Component{
    
      render(){
        return(
          <div className="banner-div" id="banner-div"  ref={this.props.carRef}>
          </div>
        );
      }   
    }
    

    轮播组件

    class CarouselComponent extends React.Component{
    
      scrollTo() {
        this.props.carRef.current.scrollTo(50)
      }
    
    }
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看