Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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
Javascript react航路点onEnter/onLeave未给出值_Javascript_Html_Node.js_Reactjs - Fatal编程技术网

Javascript react航路点onEnter/onLeave未给出值

Javascript react航路点onEnter/onLeave未给出值,javascript,html,node.js,reactjs,Javascript,Html,Node.js,Reactjs,我最近尝试使用react航路点隐藏和显示一个div。此代码在到达航路点时成功隐藏div,当该航路点位于同一个航路点时为“内部”。当它在里面时,它会将isInView变为true,从而将我的div切换为true并显示自己。onLeave的代码可能在此处出现故障,但当我控制台记录当前位置且其低于航路点时(或者在我的情况下,当我从显示的div向上滚动时,其控制台记录如下),代码没有变为false 谢谢你的帮助,我非常感激 class WhenInView extends Component {

我最近尝试使用react航路点隐藏和显示一个div。此代码在到达航路点时成功隐藏div,当该航路点位于同一个航路点时为“内部”。当它在里面时,它会将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;
在视图扩展组件时初始化{
建造师(道具){
超级(道具);
此.state={
isInView:错误
};
this.onEnter=this.onEnter.bind(this);
this.onLeave=this.onLeave.bind(this);
}
onEnter({currentPosition}){
console.log(当前位置)
if(当前位置===航路点内部){
这是我的国家({
伊森维尤:没错
});
}
}
onLeave({currentPosition}){
console.log(当前位置)
如果(this.currentPosition==下面的航路点){
这是我的国家({
isInView:错误
});
}
}
render(){
返回(
{this.props.children({isInView:this.state.isInView}}
);
}
}
在视图中导出默认值;

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

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

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

谢谢你的回复,阿拉文德里。我刚刚将this.currentPosition设置回currentPosition,但它仍然不工作。当我阅读react团队自述文件时,他们说当前位置就是它所在的当前航路点。我最近刚刚实现了这个新的依赖项,但在正确的语法方面遇到了问题。你会如何设置当前位置的条件?因为当我控制台记录当前位置时,如果当前位置在内部或下方,当它位于onLeave上的下方时,控制台会这样记录它。onLeave({currentPosition}){console.log(currentPosition,“下面的这个日志”)if(currentPosition==Waypoint.below){console.log(“因为我在div的顶部所以这个控制台”)this.setState({isInView:false});console.log(“setState”,this.setState)}尝试添加
console.log(当前位置)
在if条件内,检查该语句是否被执行,以便您至少可以知道控制在循环内,您是否可以提供指向docsiam的链接,而不是指向您的点,以便您的程序控制在循环内?我只是试图查找程序控制的含义,但我找不到。可以吗你解释什么是程序控制吗?啊哈,对不起,我还不太熟悉这种依赖关系,还没有做出反应