.focus() 不是函数[关闭]

Posted

技术标签:

【中文标题】.focus() 不是函数[关闭]【英文标题】:.focus() is not a function [closed] 【发布时间】:2020-04-02 17:14:30 【问题描述】:

我一直试图将输入字段从一个更改为另一个无济于事,当我使用 .focus 时,它给我一个错误,它不是一个函数。

我将粘贴我的代码

import React,  useEffect  from 'react';
import  signup  from '../../assets/images';
import FormDiv from '../shared/Sign-in-div';
import ImageDiv from '../shared/Image-div';
import  Nunito32, Nunito20  from '../shared/nunito/nunito';
import ImageContainer from '../shared/image-container';
import OtpField from '../shared/otp-field';
import PinkButton from '../shared/button-color-pink';

const SignUpVerification = () => 
  const fieldOne = React.createRef();
  const fieldTwo = React.createRef();
  const fieldThree = React.createRef();
  const fieldFour = React.createRef();

  return (
    <div style= display: 'flex' >
      <FormDiv style= textAlign: 'center' >
        <Nunito32
          style=
            display: 'inline-block',
            textAlign: 'center',
            marginRight: 236,
            marginLeft: 200,
          
        >
          Verify your mobile number by entering the code we sent you
        </Nunito32>
        <div style= flexDirection: 'row' >
          <OtpField
            ref=fieldOne
            style= marginRight: 10.5 
            onChange=() => fieldTwo.focus()
          />
          <OtpField
            ref=fieldTwo
            style= marginRight: 10.5 
            onChange=() => fieldThree.focus()
          />
          <OtpField
            ref=fieldThree
            style= marginRight: 10.5 
            onChange=() => fieldFour.focus()
          />
          <OtpField
            ref=fieldFour
            style= marginRight: 10.5 
            onChange=() => fieldFour.focus()
          />
        </div>

        <PinkButton style= marginTop: 75 >Continue</PinkButton>
        <Nunito20>Send again</Nunito20>
      </FormDiv>
      <ImageContainer>
        <ImageDiv bg=signup src=signup  />
      </ImageContainer>
    </div>
  );
;

export default SignUpVerification;

有人可以帮忙吗?如果你知道更好的方法,我会很感激你带领我走上正确的道路

【问题讨论】:

fieldTwo.current.focus()? 你是最棒的 这能回答你的问题吗? how react programmatically focus input 我还有一个问题:``` const fieldOne = React.createRef(); const fieldTwo = React.createRef();常量 fieldThree = React.createRef();常量 fieldFour = React.createRef(); ```我怎么能做到一句话? 【参考方案1】:

根据docs

当 ref 被传递给 render 中的元素时,对节点的引用可以在 ref 的当前属性处访问。

所以尝试使用field.current.focus()

【讨论】:

【参考方案2】:

既然你有一个功能组件,你应该使用useRefcreateRef 将在每次渲染时创建一个新引用。

https://reactjs.org/docs/hooks-reference.html#useref

该引用还将公开一个属性current,您必须使用它来设置焦点。

const fieldOne = useRef(null);
...
          <OtpField
            ref=fieldOne
            style= marginRight: 10.5 
            onChange=() => fieldTwo.current.focus()
          />
          <OtpField
            ref=fieldTwo
            style= marginRight: 10.5 
            onChange=() => fieldThree.current.focus()
          />

【讨论】:

我不知道如何在我自己的用例中实现它 const field = React.useRef(null)替换const fieldOne = React.createRef();

以上是关于.focus() 不是函数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

getElementsByClassName() - 不是一个函数[关闭]

Python 2.7 函数是不是记住值而不是引用?关闭怪异

TypeError:accounts.map不是一个函数[关闭]

语法不是函数[关闭]

gcc 是不是优化递归函数?怎么做? [关闭]

$.noty 不是函数[关闭]