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