読者です 読者をやめる 読者になる 読者になる

Stack Overflow で英語で質問してみる

Stack Overflow とは:

Stack Overflow is a question and answer site for professional and enthusiast programmers. It's built and run by you as part of the Stack Exchange network of Q&A sites. With your help, we're working together to build a library of detailed answers to every question about programming.

まあ、つまりは細かいところを聞くことができる、プログラマーのためのQ&Aサイト。
日本語サイトもあるみたいだが、それこそユーザー数の桁が違うだろう。

uraway.hatenablog.com

See the Pen BMI calc by uraway (@uraway) on CodePen.

前回の記事で書いたように、このコードを一回のクリック(calculate)イベントで動作するようにしたい。
その疑問を解決するために英語で聞いてみた。
javascript - How to implement two or more functions on Click event in React & ES6 - Stack Overflow

質問を投稿した後、リンクがうまく貼れなかったので問題の部分のコードだけを抜き出して、質問に書き加えている間にもう回答が追加されていた!
もっとも役立ちそうな回答はこうだった:

You can do this by calling the set state once at the end of your function:

bmiCalc() {
    const bmi = this.state.weight/(this.state.height*this.state.height)*10000;
    let judge = 'Obesity';
    if(this.state.bmi<18.5){this.setState({judge: 'Underweight'});}
    else if(this.state.bmi<24.9){this.setState({judge:'Normal weight'});}
    else if(this.state.bmi<30){this.setState({judge:'Overweight'});}

    this.setState({bmi: bmi, judge: judge});
}


cons,letはともにES6から追加された構文で、consは定数を、letは局所変数を宣言する。
で、この回答をもとに作り直したのが、これ。

See the Pen BMI calc 2 by uraway (@uraway) on CodePen.


数値を入れないとfalseが返されるので、ERROR!!が表示されるようにもしてみた。
ちゃんと動いているはず...

Stack Overflowを使ってみての感想

質問の仕方が悪かったかもしれない。
英語とプログラミング言語はやっぱり国際語なんだなあと再確認できた。