如果我有一个像这样的组件
const Comp = ({children}) => {
//some code
return (
<div>
{children}
</div>
)
}
然后这样称呼它
<Comp>
<input onChange={...} />
<input onChange={...} />
</Comp>
当组件渲染时,如何从组件内部将焦点更改为该组件的第一个输入字段Comp
成分。
理想情况下,我想要一个 useEffect 函数或类似的东西
useEffect(() => {
thisComponent.firstChild.focus()
})
你需要两件事,useRef
and useEffect
, useRef
用于获取目标元素引用,以及useEffect
用于在组件渲染时处理聚焦。
children
在组件中 props 是一个数组,所以你可以操作它,你可以使用index
得到哪个child
要设置 ref 的元素,然后调用focus()
通过参考useEffect
:
function App(props) {
const firstChildRef = useRef(null);
useEffect(() => {
if(firstChildRef.current) {
firstChildRef.current.focus()
}
}, [firstChildRef])
return (
<div className="App">
{props.children.map((child, index) => {
if(index === 0) {
return {...child, ref: firstChildRef};
}
return child;
})}
</div>
);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)