3

我正在尝试使用可见性组件在我的 Semantic UI React 应用程序上进行无限滚动。

我一直在 Semantic UI React 页面上关注这个例子:https ://react.semantic-ui.com/behaviors/visibility#callback-frequency-example 。我已将代码简化如下:

import React, { Component } from 'react';
import { Visibility } from 'semantic-ui-react';

export default class VisibilityExample extends Component {
    render() {
        return (
            <Visibility
                continuous={false}
                once={false}
                onTopVisible={() => console.log('test')}
                onTopPassed={() => console.log('test')}
                onBottomVisible={() => console.log('test')}
                onBottomPassed={() => console.log('test')}
                onTopVisibleReverse={() => console.log('test')}
                onTopPassedReverse={() => console.log('test')}
                onBottomVisibleReverse={() => console.log('test')}
                onBottomPassedReverse={() => console.log('test')}
                onPassing={() => console.log('test')}
                onPassingReverse={() => console.log('test')}
                onOnScreen={() => console.log('test')}
                onOffScreen={() => console.log('test')}
            >
                <div>Hello</div>
            </Visibility>
        );
    }
}

在我的简单 React App 中,没有任何console.log语句被触发。但是,当我在 Semantic UI React 网页上操作代码时,console.log语句会按预期触发。

我错过了什么?

编辑:这是我在index.js文件中呈现 VisibilityExample 组件的位置:

/* global document */

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

import VisibilityExample from './VisibilityExample';

ReactDOM.render(
    <VisibilityExample />,
    document.getElementById('root')
);
4

1 回答 1

3

Visibility 组件的事件仅在您滚动组件的容器时触发。因为所有这些事件都是基于默认的窗口滚动事件。

但是,如果您只有给定的代码,它不会有任何滚动条因此滚动事件。因此,您需要添加一些div具有任意高度的 s 来获取滚动条和滚动内容以查看console.log语句正在触发。

请参阅此示例:https ://codesandbox.io/s/D99mwMy9B

于 2017-08-12T10:52:43.733 回答