我尝试根据会话变量是true
还是false
在活动按钮和非活动按钮之间切换。
在子组件上,我声明了Session变量:
choice(e){
e.preventDefault();
...
Session.set("upNext", true);
...
};
然后,在父组件上,我将此代码放在render(){}函数中:
render(){
let upNext;
if(Session.get("upNext")){
upNext = <button className="ui right huge labeled icon primary button" onClick={this.nextPosition.bind(this)}><i className="right arrow icon"></i>Next</button>
} else{
upNext = <button className="ui right huge labeled icon primary button disabled" onClick={this.nextPosition.bind(this)}><i className="right arrow icon"></i>Next</button>
}
return(
<div className="ui container">
{upNext}
</div>
}
最后,在componentWillMount()
方法中,我将Session变量设置为false
以在下一个组件加载之前重置。
Session变量触发,从false变为true,但第一个条件内的代码(如果Session.get等于true)永远不会运行。在使用Blaze时从来没有遇到过这个问题,所以我必须在这里找到一些我完全失踪的东西。
答案 0 :(得分:0)
我刚刚决定用好的旧javascript解决这个问题,并在按钮点击我自己后操纵className
属性,而不是依赖于Session变量。
但是,为什么Sessions在React中表现得很奇怪,这有点奇怪。
答案 1 :(得分:0)
您可以在createContainer
- https://guide.meteor.com/react.html#using-createContainer