2016-11-11 23 views
0

カントは何がうまくいかないのか分かりません。 ボタンをクリックすると、状態と状態の設定が設定され、キーがtrueに変更され、そのキーがtrueの場合は別の出力がレンダリングされます。なぜ状態変化に反応しないのですか?

クリックボタンコール機能:

<input type="submit" value="I can play" onClick={() => this.canPlay()}/> 

実行この機能:

canPlay: function() { 
    let name = this.props.value; 
    console.log(name, 'name'); 
    let email = '[email protected]'; 
    this.submitUserResponseCanPlay(this.today(), name, email) 
    this.setState({thanks: true}) //SET STATE HERE 
    }, 

(感謝をgetInitialStateにfalseに設定されている)のレンダリング機能で、その後

ここにコードがあります:

render: function(){ 
    let output; 
    if (this.state.thanks){ 
     output = <Thanks />; 
    } 

が真の場合は、新しい出力をレンダリングします。 `partは次のようなレンダリング関数内にリターン部分を持つクラスです:

var Thanks = React.createClass({ 

    render: function(){ 
    return (
     <div id="results" className="search-results"> 
     Thanks, your answer has been recorded! 
     </div> 
    ) 
    } 

}); 

これは表示されません。任意のアイデアなぜ?

私のファイルの別の部分で見知らぬ事はこれのようであり、その部分が動作します。つまり、以前に送信ボタンをクリックすると、キーと値のペアがfalseからtrueに変更され、新しいページレイアウトがレンダリングされます。ただここで働いていない。多分IVEは、小さな何かを逃した。..

+0

と私はあなたが全体の構成要素ではなく部分にそれを分割を投稿することができ – Borjante

+2

render()メソッドの内部で)(あなたがリターンを忘れてしまったサンクことを置き換えますか?あなたcanPlay – Conan

+0

コンポーネントはかなり大きいバインドされていない可能性があります。他に何を見たいですか? 2つのコンポーネントがあります –

答えて

0
render: function(){ 
let output; 
if (this.state.thanks){ 
    output = <Thanks />; 
} 

これは、あなたはいつも私はあなたがJSXとして変数を設定することができると思ういけないrender

+0

レンダリングの中に何かがあります。大量のコードを表示しないようにしました。 –

+1

私が言ったのは、 'return'キーワードが必要だということです。 –

+0

あなたはレンダリング関数の全体的なコンテキストを持っていません。後で何かの要素として出力を使うこともできます。私たちはより多くの情報を見る必要があります –

0

の内側に何かを返す必要が

render: function(){ 
if (this.state.thanks){ 
    return <Thanks /> 
} 

する必要がありますので、イム間違っている場合これを無視してください。この場合、おそらくレンダーしようとしているようですが、

{output} 

あなたのコードのどこかにあるようです。代わりに

{this.state.thank ? <Thanks /> : null} 
関連する問題