我在here
上读到了这一行
this.setState({ chats: [...this.state.chats, data], test: '' });

我认为我们正在状态中保存聊天数组,... this.state.chat引用原始的聊天变量,然后我迷路了
答案 0 :(得分:2)
代码更新了两个状态:
chats
- 使用array spread从之前的chats
和新data
创建新数组。test
- 将测试更新为空字符串。这是原始代码中的拼写错误,应该是text
。传播示例:
const chats = [1, 2, 3];
const data = 4;
const newChats = [...chats, data];
console.log(newChats);
但是,由于状态是异步的,因此最好使用updater callback来更新状态,因为:
updater函数接收的prevState和props都是 保证是最新的。更新程序的输出很浅 与prevState合并。
更新示例:
this.setState((prevState) => ({ chats: [...prevState.chats, data], test: '' }));
答案 1 :(得分:0)
此处状态由聊天数组组成,它们追加存储在数据变量中的新聊天对象状态。
this.state = {
text: '',
username: '',
chats: []
};
}
因此,数据会在状态中存在的聊天数组末尾添加到聊天数组中。它正在增加状态聊天数组的大小。
this.setState({ chats: [...this.state.chats, data], test: '' });
希望你的疑点得到澄清。