Свойство 'value' не существует для типа 'never'. когда использовать крючок useRef в mui - PullRequest
2 голосов
/ 28 апреля 2020

Я использую UI материала , чтобы создать страницу входа в систему и регистрации, используя useRef, чтобы возвратить TextFiled ref экземпляр, и xxxRef.current.value, чтобы получить входное значение.

Я могу спокойно запустить свой проект и правильно получить value, но консоль всегда напоминала мне, что:

Property 'value' does not exist on type 'never'.

Вот мои фрагменты кода:

const accountRef = useRef();

<TextField
            variant="outlined"
            margin="normal"
            required
            fullWidth
            id="account"
            label="Account"
            name="account"
            autoComplete="account"
            autoFocus
            defaultValue={account}
            inputRef={accountRef}
/>


const payload = {
      account: accountRef.current?.value ?? '',
      password: passwordRef.current?.value ?? '',
      nickname: nicknameRef.current?.value ?? '',
};

1 Ответ

1 голос
/ 28 апреля 2020

useRef является обобщенным c, если вы используете его с TypeScript, так что вы можете определить ссылочный тип элемента, например const ref = useRef<Type>();

Просмотр определений типов для свойства inputRef в MaterialUI it состояния:

/**
 * Pass a ref to the `input` element.
 */
inputRef?: React.Ref<any>;

Таким образом, для исправления вы можете определить свои ссылки следующим образом:

const accountRef = useRef<any>();

Но ссылка передается через поле ввода внутри компонента, лучшим типом будет:

const accountRef = useRef<HTMLInputElement>();
...