Javascript 在react中的useState之后立即获取值
我在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
[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,以便我可以在整个文件的信令方法中使用它