在将useRef
挂钩与样式化的组件一起使用时,我遇到了一些问题。
Linter提醒我Object is possibly 'null'
在didMount useEffect
中。有任何想法吗?
ref
,这是在React钩子之前使用它的唯一方法,innerRef
道具。 这是我的组件的示例片段:
import React, { useRef, useEffect } from 'react';
import styled from 'styled-components';
const StyledInput = styled.input`
background: transparent;
`
const MyForm = () => {
const inputRef = useRef(null);
useEffect(() => {
if (inputRef && inputRef.current) {
inputRef.current.focus(); //Object is possibly 'null'
}
}, []);
return (
<StyledInput ref={inputRef}/>
);
}
答案 0 :(得分:1)
作为当前接受答案的替代方案,您还可以:
const inputRef = useRef<HTMLInputElement>(null);
答案 1 :(得分:0)
在useEffect的数组参数中传递inputRef,让我们看看它是否有效,不能保证您的ref中有一个.current
,因此每次inputRef更改时都应运行效果
答案 2 :(得分:0)
我终于找到了解决方案:
const inputRef = useRef() as React.MutableRefObject<HTMLInputElement>;
它对我有用:
import React, { useRef, useEffect } from 'react';
import styled from 'styled-components';
const StyledInput = styled.input`
background: transparent;
`
const MyForm = () => {
const inputRef = useRef() as React.MutableRefObject<HTMLInputElement>;
useEffect(() => {
if (inputRef && inputRef.current) {
inputRef.current.focus();
}
}, []);
return (
<StyledInput ref={inputRef}/>
);
}