【发布时间】:2020-01-19 22:23:49
【问题描述】:
我一生都无法弄清楚发生了什么,但是由于某种原因,当单击“单击我”时,数字会按您的预期增加。当子组件触发点击时,它会重置状态并始终打印 0。
function Child(props: {
onClick?: (id: string) => void,
}) {
const ref = useCallback((ref) => {
ref.innerHTML = 'This Doesnt';
ref.addEventListener('click',() => {
props.onClick!('')
})
}, [])
return (<div ref={ref}></div>)
}
function Parent() {
const [number, setNumber] = useState(0);
return <div>
<div onClick={() => {
setNumber(number + 1);
console.log(number);
}}>
This Works
</div>
<Child
onClick={(id) => {
setNumber(number + 1);
console.log(number);;
}}
/>
</div>
}
【问题讨论】:
-
SVGView中
useCallback()的原因是什么?我想知道这是否可能是您的问题的原因? -
获取对 div 的引用。
-
在这种情况下,reactjs.org/docs/hooks-reference.html#useref 可能更合适
-
使用 ref 也有同样的问题..
-
props.onClick!('')的轰鸣对于 Typescript 有什么特别的吗?另外,为什么要将onClick包装在一个闭包中,而不是直接将它作为回调参数传递给addEventListener?
标签: javascript reactjs react-hooks