React类组件中this.setState仅部分状态值未更新的问题求助
问题解决:state字段拼写不一致导致赋值失败
核心问题是state字段名拼写不匹配:
- 初始化state时,你定义的字段是
guestsCanPause(末尾带s,复数形式) - 但在
setState中赋值时,你写的是guestCanPause(末尾少了s,单数形式)
React的state是严格匹配字段名的,这个拼写错误导致guestsCanPause始终保持初始化的false值,而你误以为是guestCanPause没读取到data里的内容——实际上你甚至没在state里定义guestCanPause这个字段。
另外补充一个小细节:你调用this.getRoomDetails(this.roomCode)时传了参数,但getRoomDetails方法定义里并没有接收这个参数,不过因为你在方法里用的是this.roomCode,所以这个不影响功能,但为了代码规范可以去掉调用时的参数,或者在方法里接收参数使用。
修正后的getRoomDetails方法代码:
getRoomDetails() { fetch("/api/get-room" + "?code=" + this.roomCode) .then((response) => response.json()) .then((data) => { this.setState({ votesToSkip: data.votes_to_skip, guestsCanPause: data.guest_can_pause, // 修正为和state一致的字段名 isHost: data.is_host, }); console.log(data); }); }
内容的提问来源于stack exchange,提问作者ScamRock
相关产品推荐
相关产品推荐

