reactを触ってみた
せっかくなので新しい形で使いたくes6の形にしたら、reactの元の書き方では動かないところがあったのでメモしておく
1. getInitialState
# es6以前
var Component = React.createClass({
getInitialState: function() {
return {data: []};
},
es6ではgetInitialStateというメソッドを定義しても動かない。以下のように定義する。
# es6
class Component extends React.Component {
constructor() {
super();
this.state = {
data: [],
};
}
2. props
render: function() {
<Component id=1 />
}
このように呼び出されるComponentがあった場合、
# es6以前
var Component = React.createClass({
getInitialState: function() {
return {data: Store.getData(this.props.id)};
},
# es6
class Component extends React.Component {
constructor(props) {
super(props);
this.state = {
data: Store.getData(props.id)},
};
}
es6ではconstructor内でpropsにアクセスするために引数として受け取る必要がある
3. callbackのthis
callbackとして登録したメソッド内で呼ばれるthisがundefinedになる
例えば、es6で以下のように書いてcallbackとして登録すると実行時にthisがundefinedとなる
render() {
return <button onClick={this.callback} />
}
callback(event) {
console.log(this.state.data);
}
なので以下のようにbindを利用する
render() {
return <button onClick={this.callback.bind(this)} />
}
参考
- http://qiita.com/cubdesign/items/ee8bff7073ebe1979936
- http://qiita.com/koba04/items/bc13d1f42964278ae14e

入門 React ―コンポーネントベースのWebフロントエンド開発
- 作者: Frankie Bagnardi,Jonathan Beebe,Richard Feldman,Tom Hallett,Simon HØjberg,Karl Mikkelsen,宮崎空
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/04/03
- メディア: 大型本
- この商品を含むブログ (2件) を見る