javascript - react-waypoint onEnter/onLeave 没有给出值

标签 javascript html node.js reactjs

我最近在尝试 react-waypoint 来隐藏和显示一个 div。这段代码成功地隐藏了 div 当它击中航路点时是“内部”,当它是 onEnter 时。当它在里面时,它会将 isInView 变为 true,这会将我的 div 切换为 true 并显示自己。 onLeave 的代码在这里可能有问题,但是当我控制台记录当前位置并且它低于航路点时(或者在我的情况下,当我从显示的 div 向上滚动时,它被控制台记录如下)代码没有变成 false .

感谢您的帮助,我非常感激!

class WhenInView extends Component {
    constructor(props){
        super(props);
        this.state = {
            isInView: false
        };
        this.onEnter = this.onEnter.bind(this);
        this.onLeave = this.onLeave.bind(this);
    }


      onEnter({ currentPosition }){
        console.log(currentPosition)
        if (currentPosition === Waypoint.inside){

            this.setState({
                isInView: true
            });
        }
    }
        onLeave({ currentPosition }){
        console.log(currentPosition)
        if (this.currentPosition === Waypoint.below){  

            this.setState({
                isInView: false
            });
        }
    }

    render(){
        return (
            <div>
            <Waypoint onEnter = {this.onEnter} onLeave ={this.onLeave}></Waypoint>
            {this.props.children({ isInView: this.state.isInView})}
            </div>
        );
    }
}
export default WhenInView;

最佳答案

这里的问题是你正在使用 this.currentPosition 而不是 currentPosition 并且你没有 currentPosition 的状态变量所以每次它返回undefined 并且您的条件总是计算为 false,因此控件甚至没有进入循环,这就是问题所在。 这应该是您的 onLeave 函数:

onLeave({ currentPosition }){
    console.log(currentPosition)
    if (currentPosition === Waypoint.below){  

        this.setState({
            isInView: false
        });
    }
}

关于javascript - react-waypoint onEnter/onLeave 没有给出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285496/

相关文章:

json - 无法从 NodeJS 中的 JSON 响应获取值

javascript - Extjs在商店中查找具有相同属性的记录

javascript - 如何使用 webpack 在 React 应用程序中异步请求模块?

javascript - 使用本地日期设置和获取 HTMLInputElement.valueAsDate 的正确方法是什么?

php - Wordpress 上的特色帖子部分不会显示

javascript - PHP 和 Node.JS - 加密 PBKDF2

javascript - 添加图像时重叠同位素图像

javascript - 如何获取选择选项的值,并使用它来查询数组,以填充另一个输入

javascript - HTML5 DIV 在 Chrome 和 Firefox 中不可拖动

node.js - 在 Node 中使用 MemoryStore 存储 session 数据,类似于 $_SESSION ['data' ] = PHP 中的值