Javascript 在react中的useState之后立即获取值

Javascript 在react中的useState之后立即获取值,javascript,reactjs,Javascript,Reactjs,我在react的功能组件中使用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

我在react的功能组件中使用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
是一个异步函数,您可以在调用它后立即获取
myRoom

您可以解决您的问题:

function(){
const newRoom=“测试2”;
setMyRoom(newRoom)
控制台日志(newRoom)
}

设置myRoom的目的不是更改局部变量
myRoom
myRoom
可能是一个
const
,因此这是不可能更改的,即使它是
let
,设置状态也不会尝试这样做

相反,调用setState的目的是告诉react您希望组件重新加载。当组件重新运行时,它将获得一个新的局部变量,并具有新的值

在重新渲染之前如何获取它

很少需要这样做,但如果这样做,可能会将值保存到变量并使用该变量

const newRoom = "test 2"
setMyRoom(newRoom);
console.log(newRoom);
使用setState和使用普通JS有什么区别


setState是react提供的api,用于告诉它您希望组件重新加载。如果你不使用它,那么你就不会告诉react to rerender。

这回答了你的问题吗?我知道这很少见,我实际上使用WebRTC with react,所以当我按下call时,我需要保存我要调用的用户id,以便我可以在整个文件的信令方法中使用它