Javascript react航路点onEnter/onLeave未给出值
我最近尝试使用react航路点隐藏和显示一个div。此代码在到达航路点时成功隐藏div,当该航路点位于同一个航路点时为“内部”。当它在里面时,它会将isInView变为true,从而将我的div切换为true并显示自己。onLeave的代码可能在此处出现故障,但当我控制台记录当前位置且其低于航路点时(或者在我的情况下,当我从显示的div向上滚动时,其控制台记录如下),代码没有变为false 谢谢你的帮助,我非常感激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 {
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的链接,而不是指向您的点,以便您的程序控制在循环内?我只是试图查找程序控制的含义,但我找不到。可以吗你解释什么是程序控制吗?啊哈,对不起,我还不太熟悉这种依赖关系,还没有做出反应