reactjs - Reactjs this.props.map 不是函数
问题描述
我正在尝试制作一个简单的消息应用程序,它接受用户名和一条消息,然后将消息传递下来并显示在另一个组件中。在应该显示消息的组件中,我收到一条错误消息this.props.messages.map is not a function
。
这是我的代码沙箱:
https://codesandbox.io/s/unruffled-pasteur-nz32o
这是我的实际代码:
父组件:
import React, { Component } from "react";
import Messages from "./Messages";
import Input from "./Input";
export default class Container extends Component {
constructor(props) {
super(props);
this.state = {
messages: {
user: [],
message: []
}
};
}
updateMessage(message, sender) {
this.setState({
messages: [...this.state.messages, { user: sender, message: message }]
});
}
render() {
return (
<div>
<Messages messages={this.state.messages} />
<Input
updateMessage={(message, sender) =>
this.updateMessage(message, sender)
}
/>
</div>
);
}
}
这里是应该显示消息的地方(也是我得到错误的地方):
import React, { Component } from "react";
export default class Messages extends Component {
render() {
return this.props.messages.map(message => {
return (
<div>
{message.user}: {message.maessage}
</div>
);
});
}
}
任何想法可能导致我的错误?谢谢!
解决方案
messages
被初始化为状态中的对象。如果你想map
覆盖它,它应该是一个数组。所以而不是这个:
constructor(props) {
super(props);
this.state = {
messages: {
user: [],
message: []
}
};
}
你会想要这个:
constructor(props) {
super(props);
this.state = {
messages: [
{
user: [],
message: []
}
]
};
}
推荐阅读
- ubuntu - certbot 失败的授权过程错误
- rust - 从 Rust 填充 C 字符串指针的正确方法是什么?
- c# - 未绘制 UserControl 中的 LiveChart
- python - os.subproccess 如何避免关闭cmd后关闭进程
- asp.net-mvc - Twilio 记录完成“动作:”,但记录为空
- bluetooth - Oculus 的 BLE 和蓝牙游戏手柄选项
- php - 如何从该数组中获得所需的总和
- sql - 根据另一个更新列
- ssrs-2008 - 用于 SSRS 的自定义日期格式 iseries 访问 odbc
- ml.net - Microsoft.ML --version 0.3.0 -- 无法在 10 分钟内开始使用 ML.NET