我在反應應用程序中使用material-ui v1,我試圖以編程方式在TextField上調用.focus()
。在TextField上使用ref
屬性返回null,那麼我是如何引用TextField以在需要時調用.focus()
?Focus-TextField in material-ui v1
0
A
回答
0
我認爲你可以利用參考來實現這一點。
下面是示例代碼
<input
ref={(input) => { this.nameInput = input; }}
defaultValue="will focus"
/>
現在正在使用裁判的,你可以進行如下
this.nameInput.focus();
這應該解決您的輸入框設定一個焦點問題,當其他一些事件被解僱。
0
更新2017-09-25:在新的解決方案中,我擺脫了ReactDOM ...這是更優雅的方式。
這是我以編程方式將焦點放在material-ui TextField(v1-beta16)上的方式。
import React from 'react';
class MyComponent extends React.Component {
// you could have similar logic in 'componentDidMount'
componentWillReceiveProps(newProps) {
if (..someCondition...) {
// this is were the focus happens
this.labelField.focus();
}
}
render() {
...
<TextField inputRef={field => this.textField = field} .../>
}
}
我以前下面的解決方案 - 請勿使用:
這是我如何編程將焦點設置材料的UI文本字段。
import React from 'react';
import ReactDOM from 'react-dom';
class MyComponent extends React.Component {
// you could have similar logic in 'componentDidMount'
componentWillReceiveProps(newProps) {
if (..someCondition...) {
// this is were the focus happens
ReactDOM.findDOMNode(this.labelField).querySelector('input').focus();
}
}
render() {
...
<TextField ref={field => this.textField = field} .../>
}
}
注意,我不滿意我描述這裏的解決方案,因爲它依賴於知道的TextField兒童(querySelector('input')
),但主要是因爲它需要進口ReactDOM。
- 這會使組件難以使用jest進行測試嗎? (還沒有嘗試...)
ReactDOM.findDOMNode
被facebook視爲"escape hatch [...that is...] discouraged"。
相關問題
- 1. MaterialUI與樣式組件,SSR
- 2. 在MaterialUI AppBar中存在空白
- 3. 如何將焦點設置爲materialUI TextField?
- 4. 差[「V1」]和$ _ POST [V1]在數字領域
- 5. Ionic v1 type =「date」
- 6. sql:BETWEEN v1和v2
- 7. 兵API V1文檔
- 8. Linq to Entity Framework(v1)
- 9. IConnectionIdFactory - 什麼是v1?
- 10. 圖像分類。 (v1)
- 11. Ionic V1標籤+ SQLite
- 12. 用tastypie/api/v1/user
- 13. 樣式不適用於MaterialUI中的SVGIcon React
- 14. 使用MaterialUI中的選擇字段和Redux表單時出錯
- 15. https://i.instagram.com/api/v1什麼是https://i.instagram.com/api/v1
- 16. 停止Powershell V2調用命令-ComputerName它總是運行V1 V1
- 17. 網絡廣播 - 燈塔-V1
- 18. 使用redux-form和materialUI爲TimePicker設置defaultValue?
- 19. 使用materialUI或引導進行React頭設計
- 20. 工具欄中的中心頭像與MaterialUI
- 21. ReactJS MaterialUI複選框 - onCheck中的設置狀態()
- 22. React + MaterialUi在IconMenu和ListItem中處理操作
- 23. htaccess的重寫規則API/V1 /(.*)$ API/V1/api.php?請求= $ 1 [QSA,NC,L]不工作
- 24. Microsoft Kinect V1國家列表
- 25. Google Cloud Datastore REST API v1(gqlQuery)
- 26. Android Google Maps API v1 Gradle
- 27. java openx api v1或v2
- 28. Google Cloud Endpoints Migration v1至v2
- 29. Zend Framework v1插入多行
- 30. Facebook登錄與離子v1
如果你只是需要自動對焦,你可以做' ' –
FuzzyTree
我沒有嘗試自動對焦,我試圖在菜單關閉時關注TextField。 – CodePB