2 回答

TA貢獻1843條經(jīng)驗 獲得超7個贊
我無法在桌面瀏覽器上重現(xiàn)該錯誤。錄屏時用的是什么瀏覽器?
function App() {
const textareaRef = React.useRef();
const handleClick = () => {
if (textareaRef.current) {
console.log('Field clicked');
textareaRef.current.focus();
}
};
return (
<div>
<div onClick={handleClick}>click me to focus input</div>
<input
ref={textareaRef}
onFocus={(e) => e.persist()}
/>
</div>
)
}
ReactDOM.render(
<App />,
document.getElementById('root')
)
<script src="https://unpkg.com/react@16.14.0/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.14.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>

TA貢獻1831條經(jīng)驗 獲得超10個贊
您可以在useEffect() Hook 中執(zhí)行此操作。下面的組件模擬了您的場景。當組件加載時,我使 focus() 出現(xiàn)在輸入上。
import React, { useEffect, useRef } from 'react';
const UseRefBasics = () => {
const refContainer = useRef(null);
const handleSubmit = (e) => {
e.preventDefault();
console.log(refContainer.current.value);
};
useEffect(() => {
console.log(refContainer.current);
refContainer.current.focus();
});
return (
<>
<form className='form' onSubmit={handleSubmit}>
<div>
<input type='text' ref={refContainer} />
</div>
<button type='submit'>submit</button>
</form>
</>
);
};
export default UseRefBasics;
這是我給出的一般場景。您可以使用useEffect()并在狀態(tài)更新時通過提供另一個參數(shù)useEffect(()=>{},[state1])或以您需要的任何方式獲得焦點。
添加回答
舉報