我正在使用这段代码来确定youtube播放器状态更改时该怎么办,并且始终希望在用户不是主机的情况下返回:
const [host, setHost] = useState()
const [yourID, setYourID] = useState();
useEffect(() => {
socketRef.current = io.connect('/');
socketRef.current.on("host", id => {
setHost(id);
})
socketRef.current.on("your id", id => {
setYourID(id);
})
}, []);
function onPlayerStateChange(e) {
console.log(host)
console.log(yourID)
if (host !== yourID) return
switch (e.data) {
// the logic to determine what to do...
}
}
但是,host
和yourID
总是返回undefined
。另一方面,在单击某些按钮时使用类似这样的功能时,它将返回正确的值:
function test() {
console.log(host)
console.log(yourID)
}
<button onClick={test}>test</button>
我的问题如下:
onPlayerStateChange
中更新,而在其他函数中更新?yourID
和host
来有条件地呈现页面上的某些元素,所以那是行不通的。