当前位置: 首页 > 知识库问答 >
问题:

我如何让inputRef返回元素从?尝试了我能想到的一切,但还是无效

阮喜
2023-03-14

我有一个文本字段,我只在单击另一个单选按钮时渲染它。根据React和Material UI文档,我应该能够使用TextField上的inputRef={this.myRef}获得对Mui TextField中输入元素的引用。我可以为另一个未切换的TextField执行此操作,但当我尝试使用刚刚打开的with TextField时,它显示为null。

我试过使用inputRef={this.otherText}和inputProps={{ref:this.otherText}}得到相同的结果。

// Start of my class where I do the createRef()
class Form extends Component {
  constructor(props) {
    super(props);
    this.otherText = React.createRef();
  }

// Start of function where I try to reference the ref:
processApplication = e => {
    if (e.target.value.toLowerCase() === 'other') { // this triggers the         TextField to be rendered
        console.log(this.otherText); // Returns null, kinda - see screenshot
    }

// The TextField I'm trying to reference:
<TextField
    id='applicationOther'
    name='applicationOther'
    label='Describe application:'
    margin='normal'
    multiline={true}
    fullWidth={true}
    onChange={this.anyChange}
    autoFocus={true}
    inputRef={this.otherText}  // Here's where the reference is made
/>

我希望这样。otherText具有对元素的引用,但这是。其他文本。当前值为空。

共有2个答案

傅兴平
2023-03-14

我也有同样的问题,做以下工作对我来说:

<TextField
    variant="filled"
    inputRef={(input) => {
      if(input != null) {
         input.focus();
      }
    }}
/>

在我的例子中,这里的技巧是if(input!=null)。您还可以在这里查看一个工作示例:CodeSandBox-MaterialUITextFieldFocus

谢麒
2023-03-14

因此,要向任何tipe的输入添加一些内容,包括材料TextField,您需要将其分配为,例如:

this.state = { input: 'Some string' }
<TextField value={this.state.input} />

请记住非受控组件和受控组件之间的细微差别,因此根据您的用例,您可能希望传递defaultValue,而不是value。从文档中:

在React渲染生命周期中,表单元素上的value属性将覆盖DOM中的值。对于不受控制的组件,您通常希望React指定初始值,但不控制后续更新。要处理这种情况,您可以指定一个defaultValue属性,而不是value

文档链接

 类似资料:
  • Android Kotlin,<代码>api。openOrder返回类型为BaseResponse 我想要的代码是,如果配置文件。值不为null,API返回BaseResponse 但android studio提示,这种有趣的返回类型是任何,如何修复? 排除if-else用法,因为配置文件。值具有许多属性,并且具有配置文件。价值用户名,

  • 在第二个while循环(在用户选择抛硬币模拟器选项之后),当用户选择0时,我遇到了问题,程序没有像我希望的那样返回到主菜单,而是停止了,没有循环回到主菜单,让用户选择另一个选项。 有什么办法解决这个问题吗?我不能使用多个方法,因为这是我正在做的一个项目的要求。我已经被困在这一个部分很长时间了,现在(一个星期),并将感激地感谢任何指针或方向。 下面是当用户运行抛硬币模拟器后选择零时我的程序的样子。

  • 问题内容: 我发现自己同意返回接口而不是具体的类。 原因很简单,我要松散耦合。 但是还会有其他影响或权衡吗? 问题答案: 对于List或ArrayList之类的类型,不应进行任何编译,并且应将List提升Code返回到接口。 如果这是通过诸如CopyOnWriteArrayList之类的并发包进行的,并且您使用的是addIfAbsent之类的方法(未在List接口中定义),您将发现自己受到限制。

  • 我发现自己同意返回一个接口,而不是一个具体的类。

  • 在这里,我使用了一个点切割注释,如下所示: 它给了我一个例外,那就是: 我刚刚开始学习AOP。任何建议或帮助都会有很大帮助。谢谢。

  • 问题内容: 我在现有帖子中找不到解决方案(尽管我一直在寻找)。在下拉菜单中进行选择后,我试图从代码中的URL抓取数据。最后,我想单击“保存”按钮并下载excel文件。这是可以正常运行的代码,但最终无法单击“保存”按钮。 单击菜单中的“进度监视”项,然后单击“物理和财务项目摘要”项。然后,为每个下拉项进行选择。 该代码成功运行,但是,没有单击保存按钮。令人惊讶的是,一旦我在spyder编辑器中运行了