ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  JavaScript 投稿者:mori-dev

React コンポーネントで自分の子要素を取得するときのイディオム

です。

課題

React コンポーネントで自分の子要素を取得するときに、ref=”payjpCheckoutRef” などと指定しておいて、findDOMNode(this.refs.payjpCheckoutRef) していたら、eslint で警告がでていた(のをつまらないしめんどくさいからコメントをつけてやりすごしていた)。ref=”payjpCheckoutRef” に対しては、Using string literals in ref attributes is deprecated、 findDOMNode(this.refs.payjpCheckoutRef) に対しては、Using string literals in ref attributes is deprecated

対策

ビフォー

 

componentDidMount() {
this.payjpCheckoutRef = findDOMNode(this.refs.payjpCheckoutRef);
this.payjpCheckoutRef && this.payjpCheckoutRef.appendChild(this.script);
}

render() {
return <div ref=”payjpCheckoutRef”></div>;
}

アフター

 

componentDidMount() {
// this.payjpCheckoutRef に ref で指定した要素が格納されている
this.payjpCheckoutRef && this.payjpCheckoutRef.appendChild(this.script);
}

render() {
return <div ref={node => this.payjpCheckoutRef = node}></div>;
}

元ネタ

gaearon さんの findDOMNode 批判が有益でした。

宣伝

ランサーズの新規事業 pook では、Wantedly に正社員希望の Rails エンジニアの求人を出しています。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

5分で完了!Webサイトに簡単にチュートリアルが作れるIntro.jsの使い方

こんにちは。 開発部の 神庭(godgarden)です。   先日、サービスの操作説明をするために、操作マニュアル(チュートリアル)ようなものを作りたいって要望があり、少しだけ調べる機会がありました。 操作マニュアル(チュートリアル)といえば、前職の …

チャットワークをもっと使いやすくする拡張機能を作った

こんにちはエンジニアの上野です。 2016年のAdventCalendar も残すところあと僅か! 12/5の投稿(githubのissue, pull request 検索をハックする!)に引き続き、今日はチャットワークの拡張プラグインのご紹介です。エンジニ …

thumbnail
ランサーズ流 React.js/redux アプリ開発入門

はじめまして、森(@mori-dev) と申します。React.js/redux, Rails, Node を使ったアプリの開発を行っています。 このエントリーでは、ランサーズでの React.js/redux プロジェクトの設計/実装などの雰囲気がわかるよう …