【发布时间】:2017-03-05 02:14:38
【问题描述】:
我正在创建一个简单的聊天应用程序,在其中我通过 axios 对我的数据库进行 api 调用,它返回一组消息对象。当我在 componentWillMount 中进行 axios 调用时,我能够获取数据。然后我试图 setState 来显示对话。代码如下:
export default class Chat extends Component {
constructor(props){
super(props);
this.state = {
messages : [],
message : '',
};
this.socket = io('/api/');
this.onSubmitMessage = this.onSubmitMessage.bind(this);
this.onInputChange = this.onInputChange.bind(this);
}
componentWillMount() {
axios.get(`api/messages`)
.then((result) => {
const messages = result.data
console.log("COMPONENT WILL Mount messages : ", messages);
this.setState({
messages: [ ...messages.content ]
})
})
};
我看过一些关于生命周期函数和设置状态的帖子,似乎我在做正确的事情。
再次强调,axios 调用工作正常,设置状态不起作用。我仍然看到一个空数组。提前致谢!
编辑:这是专门针对我的问题的解决方案。它被埋在评论中,所以我想我会把它留在这里..
“我发现了问题。实际上是我如何解析数据。...messages.content 上的扩展运算符不起作用,因为messages.content 不存在。messages[i].content 存在. 所以我的解决方法是只传播 ...messages 然后在一个子组件中映射对象并解析 .content 属性。感谢大家的帮助!”
【问题讨论】:
标签: javascript reactjs state