React.jsを書いていく中でよく使うノウハウやTipsの紹介です。
🐮 初期値をAjaxで取得するならComponentDidMountでセット
Componentの初期値をAjaxで取得するならComponentDidMountで取得するのが良さそうです。
class CommentBox extends React.Component {  | 
🐡 編集途中のブラウザリロード前に警告を出す
class OriginalComponent extends React.Component {  | 
🐝 React bindの記述
ES6でReact.Componentを使う場合のbindの記述パターン。
class Sample extends React.Component {  | 
eventと引数を受け渡したいパターンの場合は次のように記述します。
class Sample extends Component {  | 
🚕 setStateでArrayをセットする
componentDidUpdateを動作させるためには、setStateでは必ず別のオブジェクトをセットする必要があります。Arrayオブジェクトのstateを更新する場合は次のように記述します。
this.setState({ ids: this.state.ids.concat([newId]) })  | 
🤔 Render関連
HTMLを直接renderする
Reactのrenderメソッドの中でHTMLの文字列を直接描画する場合は次のように記述します。
createMarkup() {  | 
form/selectタグについて
FormのSelectタグについて選択済みにする場合はvalue属性に値をセットします。
class FlavorForm extends React.Component {  | 
renderメソッド内のコメント
JSX内のrenderメソッドでのコメントは次のように書きます。
{/* A JSX comment */}  | 
ReactDOM.findDOMNode
ReactDOMはコンポーネントのDOM要素を操作するためのしくみです。ReactDOM.findDOMNodeを使うことで対象のDOMの情報を取得できます。
const name = ReactDOM.findDOMNode(this.refs.name).value.trim();  | 
ReactDOM.render
ReactDOM.renderを使うことでHTMLの決められた箇所にDOMツリーを出力できます。
import React from 'react';  | 
🍮 Component関連
stateを持たないコンポーネント
stateを持たないコンポーネントはJavaScriptのアロー関数を利用して記述できます。
const HelloWorld = ({name}) => (  | 
PureComponentについて
React.jsにv15.3から導入されたPureComponentの紹介です。PureComponentはshouldComponentでのupdateを現在のpropsと新しいpropsを比較して判定します。
通常のReact.Componentに比べて、shallowな比較で変化がないと判定されたComponentはUpdateされにくくなり、パフォーマンス改善に寄与します。
import { React, PureComponent } from 'react';  | 
🎳 参考リンク
- javascript - reactjs event listener beforeunload added but not removed
 - Can I put ajax in React component constructor?
 - アロー関数 - JavaScript | MDN
 - Stateless な React Component の記法をまとめてみた
 - How to comment in React JSX
 - Correct modification of state arrays in ReactJS
 - DOM Elements - React
 - React v15.3で新たに追加されたPureComponentについて
 - selecting “selected” on selected option
 - 今からはじめるReact.js〜propsとstate、それからrefs〜
 - Forms - React
 
