javascript - 事件处理程序后反应状态变量失去价值
问题描述
我呈现一个表格和一个列表。它在初始加载时工作得很好:
<UsersList users={this.state.users} /> <SendMessageForm sendMessage={this.addMessage} />
但是,当 SendMessageForm 被提交时this.state.users
失去它的价值,我得到Cannot read property 'map' of undefined
.
这是发送消息表单:
export default class SendMessageForm extends React.Component {
constructor() {
super();
this.state = {
message: ''
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(e) {
this.setState({
message: e.target.value
});
}
handleSubmit(e) {
e.preventDefault();
this.props.sendMessage(this.state.message);
this.setState({
message: ''
});
}
render() {
return (
<div id="MessageField">
<form
onSubmit={this.handleSubmit}
className="send-message-form">
<input
onChange={this.handleChange}
value={this.state.message}
placeholder="Type your message and hit ENTER"
type="text"
/>
</form>
</div>
);
}
}
这是用户列表:
import React, { Component } from 'react';
class UsersList extends Component {
render() {
return (
<div id="UList">
<ul className="users-list">
{this.props.users.map((user, index) => {
return (
<li key={index}>
<span>{user}</span>
</li>
);
})}
</ul>
</div>
);
}
}
export default UsersList;
你能帮我理解状态变量 users 是如何失去它的价值的吗?
编辑:
将消息添加到 MessageList。MessageList 工作得很好,问题出在 UsersList 上。顺便说一句,我正在使用 Chatkit 库。
addMessage(text) {
this.state.currentUser.sendMessage({
text,
roomId: this.state.roomId.toString()
})
.catch(error => console.error('error', error));
}
解决方案
推荐阅读
- php - 当 PHP “声明”一堆 HTML / PHP 标签时,这意味着什么?
- android - 自定义 View 有没有办法检测其 Activity 何时暂停或停止?
- asp.net-core - ASP.NET Core 2.2 主布局模型问题
- python - 加入列表中的许多数据在数组中不起作用 python
- html - 粘性导航显示在叠加层上方
- powershell - 在 Excel 公式中包含正斜杠
- android - 谷歌智能锁在一个应用程序中显示我所有的手机账户,而不是以前使用的那些
- python - pip install PDAL 失败,缺少 pdal-config
- windows - 从跳转返回主
- python - 如何加入两个数据框并保留每个数据框的某些列?