今回は
state
を使ってみたいと思います。state
props
との違いは、値の変更が可能でコンポーネント作成後でも値を設定できます。
サンプルとして今回はいいねボタンを作成してみたいと思います。
最終的な完成版がこちら↓
最終的な完成版がこちら↓
しょぼいというツッコミは無しで・・
コンポーネント作成
構成は今までと同じで以下の通りです。
.
├── index.html
├── package.json
├── src
│ ├── container.js
│ └── good_button.jsx ☆
└── webpack.config.js
今回新たに
最終的な内容がこちら↓
good_button.jsx
を作成します。最終的な内容がこちら↓
import React from 'react';
import ReactDOM from 'react-dom'
class GoodButton extends React.Component {
constructor() {
super();
// [1]
this.state = {
goods: 0
};
this.handleClick = this.handleClick.bind(this); // [4]
}
handleClick() {
this.setState({goods: this.state.goods + 1}); // [3]
}
render() {
return (
// [2]
<button onClick={this.handleClick}>
+{this.state.goods}
</button>
);
}
}
ReactDOM.render(
<GoodButton />,
document.getElementById('container')
);
GoodButton
クラスは今回goodsというstate
の値を持っています。
まずコンストラクタで
goods
を0
に初期化しています。・・・[1]
次にボタンが押されたイベントで
this.handleClick
を指定しています。・・・[2]handleClick
では現在のgoods
の値を+1しています。・・・[3]
とまあいたってシンプルです。
ちなみに・・
[4]の処理は何をしているかというと、
[4]の処理がないと
[4]の処理は何をしているかというと、
handleClick
内でthis
を使ってますが[4]の処理がないと
button
のthisになってしまいエラーになってしまいます。
試しに[4]の処理をコメントアウトして実行するとコンソールに
以下のエラーが表示されました。
以下のエラーが表示されました。
今回のはしょぼいですが、CSSをちゃんと使ってかっこいいボタンも作れると思います。
0 件のコメント:
コメントを投稿