javascript - React Hook useEffect 缺少依赖“消息”
问题描述
我第一次尝试使用 MERN,但现在我被这个返回上述警告的代码困住了,尽管编译工作正常,但缺少一些活动。我附上了我的部分代码。
import React, { useEffect, useState } from "react";
import "./App.css";
import Chat from "./Chat";
import Sidebar from "./Sidebar";
import Pusher from 'pusher-js';
import axios from './axios'
function App() {
const [messages, setMessages] = useState([])
useEffect(() =>{
axios.get('/messages/sync').then((response) => {
setMessages(response.data)
})
}, [])
useEffect(() => {
const pusher = new Pusher('----------------', {
cluster: '^^^'
});
const channel = pusher.subscribe('message');
channel.bind('inserted',(newMessage) => {
alert(JSON.stringify(newMessage));
setMessages([...messages, newMessage])
});
}, [])
console.log(messages)
return (
<div className="app">
<div className="app_body">
<Sidebar />
<Chat />
</div>
</div>
);
}
export default App;
这是控制台输出:
Compiled with warnings.
./src/App.js
Line 27:6: React Hook useEffect has a missing dependency: 'messages'. Either include it or remove the dependency array. You can also do a functional update 'setMessages(m => ...)' if you only need 'messages' in the 'setMessages' call react-hooks/exhaustive-deps
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
我正在尝试使用在线视频教程构建此应用程序,但这是我遇到的问题。如何解决这个问题?
解决方案
因为您messages
在useEffect
. 您只是在调用setMessages
更新状态时使用函数,如下所示:
setMessages(preMessages => ([...preMessages , newMessage]))
推荐阅读
- c - C 中 fread () 和 fwrite () 函数的问题
- r - 我将如何在 R 中指定这个函数(数学公式)?
- volttron - VOLTTRON 安装在 rasbian buster 上
- snowflake-cloud-data-platform - 用于检索在列表的任何元素中包含字符串的 JSON 的雪花查询
- python-3.x - python中的绝对文件夹路径
- html - 通过 CSS 在 Adobe XD 和 Web 上 Work Sans 字体的外观不同
- vb.net - 按字母顺序组织 Visual Studio vb.net 子例程
- android - Android 打印自定义布局
- visual-studio-2013 - 适用于 Windows 7 的 Crystal 报表查看器
- python-3.x - python asyncio 在这种情况下,我是否必须在所有代码中都写“await”?有没有更有效的方法?