This question already has answers here:
useState set method not reflecting change immediately
                            
                                (2个答案)
                            
                    
                2个月前关闭。
        

    

我在反应中的功能组件中使用useState!
只是对某些事情感到困惑

[myRoom,setMyRoom] = useState('test1');


例如,当我使用此函数setMyRoom在方法中设置我的房间时,它不会更改值,直到第二次重新启用

function(){
setMyRoom("test 2")
console.log(myRoom)
// here i get test1 from the first line but not (test2) !!
//why don't i get it immediately?
//how can i get it before the re-render?
}


第二个问题,使用setState和使用普通JS有什么区别?
myRoom ='test2'

最佳答案

setMyRoom的目的不是更改局部变量myRoommyRoom可能是const,所以不可能更改,即使它是let也不是设置状态要尝试的。

相反,调用setState的目的是告诉react您希望组件重新呈现。当组件重新渲染时,它将获得具有新值的新局部变量。


  如何在重新渲染之前得到它?


很少需要这样做,但是如果这样做,则可以将值保存到变量中并使用该变量。

const newRoom = "test 2"
setMyRoom(newRoom);
console.log(newRoom);



  使用setState和使用普通JS有什么区别


setState是react提供的api,可以告诉您要重新渲染组件。如果您不使用它,就不会告诉您要重新渲染。

关于javascript - 在useState react 后立即获得值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60545690/

10-11 05:30