【发布时间】:2020-11-28 05:51:09
【问题描述】:
这是我的反应钩子代码:
function Simple(){
var [st,set_st]=React.useState(0)
var el=React.useRef(null)
if (st<1)
set_st(st+1)//to force an extra render for a grand total of 2
console.log('el.current',el.current,'st',st)
return <div ref={el}>simple</div>
}
ReactDOM.render(<Simple />,document.querySelector('#root') );
我认为它应该渲染两次。第一次 el.current 应该为空,第二次应该指向 div 的 DOM 对象。 运行时,这是输出
el.current null st 0
el.current null st 1
确实,是的,渲染了两次。但是,第二次渲染 el.current 仍然为空。为什么?
解决方案:如下面的 Gireesh Kudipudi 所述。我添加了useEffect
function Simple(){
var [st,set_st]=React.useState(0)
var el=React.useRef(null)
if (st<1)
set_st(st+1)//to force an extra render for a grand total of 2
console.log('el.current',el.current,'st',st)
React.useEffect(_=>console.log('el.current',el.current,'st',st)) //this prints out the el.current correctly
return <div ref={el}>simple</div>
}
ReactDOM.render(<Simple />,document.querySelector('#root') );
【问题讨论】:
标签: reactjs react-hooks use-ref