Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 反应如何包装组件';身高是多少?_Html_Reactjs_Dom_React Ref - Fatal编程技术网

Html 反应如何包装组件';身高是多少?

Html 反应如何包装组件';身高是多少?,html,reactjs,dom,react-ref,Html,Reactjs,Dom,React Ref,有没有办法获得包装组件的DOM高度 我尝试添加ref,但控制台错误me无法为功能组件提供ref。 我设定了目标,但似乎不是这样 export default function withInfiniteScroll(Component) { return class extends React.Component { componentDidMount() { window.addEventListener('scroll', this.onScroll, true);

有没有办法获得包装组件的DOM高度

我尝试添加ref,但控制台错误me
无法为功能组件提供ref。

我设定了目标,但似乎不是这样

export default function withInfiniteScroll(Component) {  
  return class extends React.Component {
    componentDidMount() {
      window.addEventListener('scroll', this.onScroll, true);
    }
    onScroll = () => {
      // here
      console.log(
        'window.innerHeightWrapped component should either expose a ref to underlying DOM element with 
forwardRef
:

function withInfiniteScroll(Component) {  
  return class extends React.Component {
    ref = React.createRef();

    componentDidMount() {
      window.addEventListener('scroll', this.onScroll, true);
    }

    onScroll = () => {
      console.log(this.ref.current.clientHeight);
    }

    render() {
      return <Component ref={this.ref} {...this.props} />;
    }
  };
}

const Foo = React.forwardRef((props, ref) => (
  <div ref={ref}>Foo</div>
));

const FooWithScroll = withInfiniteScroll(Foo);
导出带有无限滚动(组件)的默认函数{
返回类扩展了React.Component{
componentDidMount(){
window.addEventListener('scroll',this.onScroll,true);
}
onScroll=()=>{
//这里
console.log(

'window.innerHeight包装的组件应该使用
forwardRef
向底层DOM元素公开一个ref:

function withInfiniteScroll(Component) {  
  return class extends React.Component {
    // ...same as above

    render() {
      return <div ref={this.ref}><Component {...this.props} /></div>
    }
  };
}
具有无限滚动(组件)的函数{
返回类扩展了React.Component{
ref=React.createRef();
componentDidMount(){
window.addEventListener('scroll',this.onScroll,true);
}
onScroll=()=>{
console.log(this.ref.current.clientHeight);
}
render(){
返回;
}
};
}
const Foo=React.forwardRef((props,ref)=>(
福
));
常数FooWithScroll=无限滚动(Foo);
或包装器组件应添加容器DOM元素:

具有无限滚动(组件)的函数{
返回类扩展了React.Component{
//……同上
render(){
返回
}
};
}

我设置了正向参考,但似乎不是这样-如何设置?不,就是这样。请提供。@estus Hi,在HOC中我创建了正向参考,但我如何在HOC中使用它?我认为这就是重点。和其他参考一样,我将提供一个示例。是的,谢谢。我认为第二个解决方案将混合样式,所以需要更好地考虑使用它。也很抱歉,我尝试添加了一个ref,但控制台出现了错误,因为我将“主容器”设置为函数组件。将其更改为类将起作用:
const innterDom=ReactDOM.findDOMNode(this.innterdcomponentref.current)
如果样式设置有问题,例如
,您可以接受具有相应样式/类的自定义容器元素作为支撑。不鼓励使用
findDOMNode
,也要求组件成为类,但并非总是可能的。子组件应该知道它需要公开一个ref。这就是
forwardRef
的作用在本例中。如果不总是可行或实用,请在包装好的组件周围使用容器。