React入門初心者マンです。
Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門
- 作者: Stoyan Stefanov,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
"react": "^16.8.3", "react-dom": "^16.8.3",
DOMにアクセスして .focus()
でフォーカスさせる
状態じゃないから?結局はDOMに対して.focus()
させるしかないっぽいです。
- input タグに
ref
属性を設定 this.refs["ref_value"]
で対象ref属性を持つDOMにアクセスできる- DOMにアクセスして
.focus()
でフォーカスさせる
import React, { Component } from 'react'; import ReactDOM from 'react-dom'; class Cell extends Component { componentDidUpdate() { if( this.props.isEdit ) { this.refs['text-cell'].focus(); } } render() { let content = this.props.value; if( this.props.isEdit ) { content = ( <input type="text" ref="text-cell" defaultValue={this.props.value} /> ); } return ( <td>{content}</td> ); } }
componentDidUpdate
ライフサイクルメソッドでコンポーネントが更新されたタイミングで編集モードになっていればinputタグが出力されているので、ここでDOMを取得してフォーカスさせました。
安心と信頼のO'REILLYと思って買ったReactの本、2017年に出たものなのに既に使えなくなってるメソッドや、やり方が変わってる方法だらけでReactやゔぁい… 調べながらやってるので、その分力になってると思いたいけど、その調べた結果が正しいのかが判断しづらい点が問題。
[参考]
- React.jsでrenderした後にテキストボックスにフォーカスを移す | blog@kenzauros.com
- javascript - Set focus on input after render - Stack Overflow
- React Componentのライフサイクルのまとめと利用用途 - Qiita
Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門
- 作者: Stoyan Stefanov,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
React入門 React・Reduxの導入からサーバサイドレンダリングによるUXの向上まで (NEXT ONE)
- 作者: 穴井宏幸,石井直矢,柴田和祈,三宮肇
- 出版社/メーカー: 翔泳社
- 発売日: 2018/02/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る