2016-08-08 5 views
0

html形式では、この選択メニューがあります。これは、ユーザーが後で編集して値を変更できるプロファイルのようなものです。ここでは、フォームをレンダリングしているFirstComponentコードは次のとおりです。ReactJSのドロップダウンメニューの値を更新

export const FirstComponent = React.createClass({ 
    handleLanguageCode: function(langValue) { 
     this.setState({ 
      language: langValue 
     }); 
    }, 

    renderField() { 
    return (
      <div> 
       <SelectLanguage onSelectLanguage={this.handleLanguageCode} defValue={getValue()} /> 
      </div> 
      );   
    } 
)} 

ユーザーがフォームを編集したい場合は、getValue()SelectLanguageコンポーネントに現在の値を送信します。

問題は、ユーザーがドロップダウンメニューから新しい値を選択したときに更新されないということです。以前の値は引き続き表示されます。私はそれを処理する関数handleLangChangeを書く方法を知らない。私はいくつかの方法を試しましたが、結果を得ることができませんでした:/それを修正するために誰も助けることができますか?

答えて

0

this.props.onSelectLanguage(val.id);を使用する必要があります。あなたはとても、同様に結合行う必要があり

onSelectLanguage={this.handleLanguageCode.bind(this)} 

onChange={this.handleLangChange.bind(this)} 

は参考:https://facebook.github.io/react/tips/communicate-between-components.html

+0

私はちょうどあなたの変更を追加しました。 'handleLanguageCode'が新しい値を得ていることがわかりました(' console.log(langValue); 'は新しい選択された値を出力します)。しかし、このドロップダウンではまだ変化が見られません。また、私はこの警告を受け取ります: '警告:bind():コンポーネントメソッドをコンポーネントにバインドしています。 Reactはこれを自動的に高性能で行いますので、この呼び出しを安全に削除することができます。 ' – Birish

+0

また、これらの2行を 'handleLangChange'に追加しました:' this.setState({value:val.name}); ' 'this.props.onSelectLanguage(val.id); ' – Birish

+0

@ vivian:私は本当に'バインド 'が必要ないと思う、それは明らかに自動的にそれを行う! – Birish

関連する問題