2017-01-20 6 views
1

アクティブな要素が1つしかないリストを作成しようとしています。状態はちょうどそうであるように更新されますが、isActive関数は最初はアクティブになり、状態が変化するとアクティブになりません。動作しませんES6でhttps://codepen.io/anon/pen/mRWqQX関数の戻り値に応じてdomを更新する

マイコード:ここで

は、私がES5で何をしたいの実施例です。 isActive関数は状態の変化に対してトリガしません。 setState functionを使用して反応に

import React from 'react' 

class RadioButtons extends React.Component { 
    constructor() { 
    super(); 
    this.isActive = this.isActive.bind(this); 

    this.state = { 
     selected: "" 
    } 
    } 
    isActive(value) { 
    if (this.state.selected === value) 
     return 'active'; 
    else 
     return null; 
    } 
    makeActive(value) { 
    this.state = { 
     selected: value 
    } 
    } 
    render(){ 
    return (
     <div> 
     <div className={this.isActive("option1")} onClick={this.makeActive.bind(this, 'option1')} > option 1</div> 
     <div className={this.isActive("option2")} onClick={this.makeActive.bind(this, 'option2')} > option 2</div> 
     <div className={this.isActive("option3")} onClick={this.makeActive.bind(this, 'option3')} > option 3</div> 
     </div> 
    ) 
    } 
} 

export default RadioButtons; 

答えて

3

あなたは状態を変更します。

this.setState({selected: value}); 

this.stateに新しい価値を再割り当てすることは再レンダリングトリガーされません。

+0

this.stateをthis.setStateに変更しても、ヘルプが表示されませんでした:/ divはまだdivに表示されません。 – Waltari

+1

私のための作品https://codepen.io/anon/pen/qRrpZP?editors=1111 –

+0

ありがとう、今は動作します。私はsetStateと中カッコの間に等号を残していました。エラーは出ませんが、どちらも動作しません。 – Waltari

0

代わりの方法は、メソッドを使用したいthis.stateプロパティ

this.setState({selected: value}); 

設定も再レンダリングやもののように、いくつかの追加機能がありません。

0

これは動作するはずです。

makeActive(value) { 
    this.setState({ 
     selected: value 
    }) 
    } 
関連する問題