私は、セッション変数がtrue
またはfalse
であるかどうかに基づいて、アクティブなボタンと非アクティブなボタンを切り替えようとしています。Session変数がReactで変更されたときに私の引数がトリガーしない理由を理解できたら助けてくれますか?
は、子コンポーネントで、Iは、セッション変数を宣言:
choice(e){
e.preventDefault();
...
Session.set("upNext", true);
...
};
そして、親コンポーネントで、Iは、レンダリング(){}関数は、このコードを配置:
最後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()
メソッドでは、セッション変数をfalse
に設定して、次のコンポーネントが読み込まれる前にリセットします。
セッション変数は、falseからtrueに変更されますが、最初の条件文(Session.getがtrueの場合)内のコードは決して実行されません。 Blazeを使って作業しているときに、この問題が起きたことはありませんでした。
あなたのコンポーネントの小道具、それゆえレンダリング関数が再び呼び出される原因になります。 – rdk1992
'createContainer'コンポーネントでSession変数の代わりにReactiveVarを使用しました。 –