需要从语义UI反应的Form.Input到<input>的引用-在React中被div包围

mde*_*eus 4 javascript reactjs semantic-ui-react

我使用的是语义UI反应的Form.Input,它将输入分为两个div。

这意味着,

<Form.Input type='password' name='password' id='loginPassword'></Form.Input>
Run Code Online (Sandbox Code Playgroud)

呈现如下:

<div class='field'>
  <div class='ui fluid action left icon input'>
   <input type='password' name='password' id='loginPassword' ...>
   <button ...>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想获取该<input/>元素的引用,以便可以调用focus()。

  1. 使用ref ='myRef'时,我的参考设置为组件
  2. ReactDOM.findDOMNode返回一个DOM引用,但是该引用设置为外部div(带有class ='field')。

如何获得对该<input/>元素的引用?

顺便说一句,我正在使用redux,尽管我认为这并不重要

Sag*_*b.g 5

Form.Input只是包装包装的一些组件的简写Input。因此,在后台:

<Form.Input label='Enter Password' type='password' />
Run Code Online (Sandbox Code Playgroud)

与此相同:

<Form.Field>
  <label>Enter Password</label>
  <Input type='password' />
</Form.Field>
Run Code Online (Sandbox Code Playgroud)

semantic-ui-react 支持反应refAPIInput,但要确保你使用的是当前的 ref API,而不是旧的

<Input ref={ref => this.input = ref} />
Run Code Online (Sandbox Code Playgroud)

运行示例:

<Form.Input label='Enter Password' type='password' />
Run Code Online (Sandbox Code Playgroud)
<Form.Field>
  <label>Enter Password</label>
  <Input type='password' />
</Form.Field>
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben -2

当您使用 findDOMnode (通常不建议)时,您将回到标准 js,因此:

ReactDOM.findDOMNode(your ref).querySelector('input')
Run Code Online (Sandbox Code Playgroud)

应该管用