reactjs - 控制台日志卡在无限循环中
问题描述
我正在使用 React 制作一个聊天应用程序,但由于某种原因,console.log
我的应用程序中的每一个都陷入了一个循环,并向控制台发送了无穷无尽的日志。我有点特别困惑,因为我正在为这个应用程序做一个视频教程,并且到目前为止一切都很好(因为我只有大约十分钟)。
这是我的应用程序组件:
import { ChatEngine } from 'react-chat-engine';
import ChatFeed from './components/ChatFeed';
import './App.css';
const App = () => {
return (
<ChatEngine
height='100vh'
projectID='70565141-7ecc-48ba-8cf4-684117eff882'
userName='Jay'
userSecret='123123'
renderChatFeed={(chatAppProps) => <ChatFeed {...chatAppProps} />}
/>
);
};
export default App;
这是我的 ChatFeed 组件:
import MessageForm from './MessageForm';
import MyMessage from './MyMessage';
import TheirMessage from './TheirMessage';
const ChatFeed = (props) => {
const { chats, activeChat, userName, messages } = props;
const chat = chats && chats[activeChat];
const renderMessages = () => {
const keys = Object.keys(messages);
console.log(keys);
};
renderMessages();
return <div>Chat feed</div>;
};
export default ChatFeed;
我假设这与我的组件被渲染有关,并且每次渲染时都会无休止地记录,但我不知道如何解决这个问题。它不会导致程序运行出现任何问题,但如果我无法解决这个问题,调试将非常困难和烦人。
解决方案
这是因为组件不断地重新渲染......你需要把它放在 useEffect 钩子里。
import { useEffect } from 'react';
import MessageForm from './MessageForm';
import MyMessage from './MyMessage';
import TheirMessage from './TheirMessage';
const ChatFeed = (props) => {
const { chats, activeChat, userName, messages } = props;
const chat = chats && chats[activeChat];
useEffect(() => {
const renderMessages = () => {
const keys = Object.keys(messages);
console.log(keys);
};
renderMessages();
}, [messages]);
return <div>Chat feed</div>;
};
export default ChatFeed;
推荐阅读
- c# - 在 EF 中获取最后一个可能的 Id 是更快/更好的选择:MaxAsync 与 LastAsync?
- php - 警告:number_format() 期望参数 1 为浮点数,字符串在 D:\xampp\htdocs\website\foodpoint\welcome.php 第 205 行给出
- android - 在没有服务的情况下继续在后台运行 CountdownTimer
- python - 熊猫计算给出不正确的小数点
- javascript - 在 Materializecss Carousel 中更改子项目的 translatex 和 translatey
- java - PersistenceUnit 的预部署失败,因为在将 Maven 添加到项目后“使用非实体”
- sharepoint - 从搜索中排除文档库项目
- asp.net-core - 如何在 ASP Core 5 的异常中获取方法名称和行号
- javascript - 从vue转换的cordova android应用程序中的Leafletmap是灰色的
- c++ - 静态函数可以在 C++ 中是虚拟的吗?