Tutorialでは$.ajaxを使うためにjQueryを読み込んでいるが、 Reactを使うにあたっては、DOM manipulationは行ってはいけない
React.createClass
でComponentを作るrender
でComponent(JS or JSX)を返すclass="hoge"
ではなくclassName="hoge"
renderComponent(Component, DOMElement)
で対象の要素にレンダリングComponent(args)
でoptionを渡せる<Component foo="foo" />
の形で親Componentから子Componentへ値を渡せる- これが props
- propsはimmutable(不変)な値
- propsに渡された値は、子Componentから
this.props
で受け取れる - JSXで変数を展開するには
{}
で囲む renderComponent
からも渡すことができるrender
内でデータを整形してJSXにすることも可能
- 操作可能な値
- 子Componentからは
this.state
でアクセス可能 this.setState(args)
でstateを変化させることができる- stateが変わると再レンダリングが走る
getInitialState()
でstateを初期化する- stateの初期値を返す
- Componentがレンダリングされると、
componentDidMount
が呼ばれる - サーバーからデータをfetchする場合、この中で実行して
this.setState
に渡す
- JSXに
onSomeEvent={this.someEventHandler}
の形で書く - 通常のDOMEventと同様に、Eventが引数に渡されるので
someEventHandler (e) -> e.preventDefault()
とかできる
- 親Componentに
onSomeCustomEvent={this.someCustomEventHandler}
の形で書いておく - 子Componentで
this.props.onSomeCustomEvent(args)
で親で指定したcallbackを(引数を渡して)実行することができる
- JSXに
ref=foo
の形で書くと、Componentからthis.refs.foo
で参照することができる this.refs.foo.getDomNode()
でDOMElementを返してくる
dangerouslySetInnerHTML={{__html:rawHTML}}
で、生のHTMLを渡すとsanitizeを行うことができる