2017-04-19 4 views
0

アップまたはダウンボタンをクリックしたときに番号を増減する機能を備えたコンポーネントがあります。リアクションの増減機能は1回のアップまたはダウンが可能

これは私がやったことです:

... 

this.state = { 
     score: 50, //The initial number can only go up or down 1 
     clicked: 0, 
    }; 

...then 

increment() { 
    if (!this.state.voted) { 
     this.setState({ 
     score: this.state.score + 1, 
     voted: this.state.voted = 1, 
     }); 
    } 
    } 

    decrement() { 
    if (!this.state.voted) { 
     this.setState({ 
     score: this.state.score - 1, 
     voted: this.state.voted = 1, 
     }); 
    } 
    } 
} 

を今のようにすぐに私はどちらかの機能を実行するボタンのいずれかをクリックして「それが機能を停止しますが、私はそれがある限り、それはdoesnのように動作する必要がありますトンをクリックインクリメントとデクリメントはわずか49

私はこれをどのように行うことができますまで行くことができるときに50が51に行くことができ、より1

ことを上ったり下り?

+0

あなたは何とか '状態'の開始点を追跡する必要があります。そして、あなたの 'if'ステートメントは' voted'の代わりに現在のスコアが+/- 1であるかどうかを確認します – gforce301

+1

ボタンをクリックした直後にボタンを無効にしないのはなぜですか?インクリメントボタンがすでに1になっていて、デクリメントボタンのみをクリックできるようにする。 – cabolanoz

答えて

1

投票が既に行われているかどうかを確認するフラグを使用する代わりに、値が正しい範囲内にあることを確認してください。それは> 49

this.state = { 
    score: 50, //The initial number can only go up or down 1 
    clicked: 0, 
}; 

increment() { 
    if (this.state.score < 51) { 
    this.setState({ 
     score: this.state.score + 1, 
    }); 
} 

decrement() { 
    if (this.state.score > 49) { 
    this.setState({ 
     score: this.state.score - 1, 
    }); 
    } 
} 

は、スコアは、単にscoreと同じ値に初期化さdefaultScoreような、別のプロパティを保持し、任意の値をとることができれば場合にのみ< 51場合インクリメント、およびだけデクリメント意味し、小切手はscore < (defaultScore + 1)score > (defaultScore - 1)になります。

関連する問題