任何人都可以帮助我理解为什么当Session变量与React一起变化时我的论点不会触发?

时间:2016-07-15 00:43:03

标签: meteor

我尝试根据会话变量是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时从来没有遇到过这个问题,所以我必须在这里找到一些我完全失踪的东西。

2 个答案:

答案 0 :(得分:0)

我刚刚决定用好的旧javascript解决这个问题,并在按钮点击我自己后操纵className属性,而不是依赖于Session变量。

但是,为什么Sessions在React中表现得很奇怪,这有点奇怪。

答案 1 :(得分:0)

您可以在createContainer - https://guide.meteor.com/react.html#using-createContainer

中添加需要被动反应的部分代码