gpt4 book ai didi

javascript - 数据无法从 React/Flux 应用程序中的 API 更新

转载 作者:行者123 更新时间:2023-12-03 07:31:49 25 4
gpt4 key购买 nike

我在一个项目的前端使用 React + Flux,我需要获取用户名以将其显示在侧边栏上。

问题:我在 es6 类的构造函数中调用操作,该操作从 API 获取所需的数据,并且我可以看到它从 onUserStateChanged 方法记录到控制台,但它渲染方法中的状态不会更新。我不明白如何让状态更改反射(reflect)在组件中。

export default class extends React.Component {
constructor() {
super();
UserActions.getCurrentUser();
this.state = {
user: {}
};
}

componentDidMount() {
UserStore.addChangeListener(this.onUserStateChange);
}
componentWillUnmount() {
UserStore.removeChangeListener(this.onUserStateChange);
}

onUserStateChange() {
console.log('called');
this.state = {
user: UserStore.getCurrentUser()
};
console.log(this.state);
}

render(){
var _this = this;
return (
console.log(this.state);
<div>{_this.state.user.username}</div>
);
}
}

onUserStateChange() 调用 console.log 包含从 API 返回的正确状态,而渲染中的 console.log 仅包含显示一个空白的 JS 对象

最佳答案

您可能想使用 setState

正如文档所述:

NEVER mutate this.state directly, as calling setState() afterwards may replace the mutation you made. Treat this.state as if it were immutable.

<小时/>

此外,您的构造函数似乎很奇怪,您是否真的打算不使用 UserActions.getCurrentUser(); 的结果

UserActions.getCurrentUser();
this.state = {
user: {}
};

关于javascript - 数据无法从 React/Flux 应用程序中的 API 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35786286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com