reactjs - 如何正确 setState 和 useEffect 从 React(钩子)中的对象读取和显示值?
问题描述
下面的代码有一个消息对象。该代码显示消息对象中每个名称的列表。通过单击其中一个名称,我想显示与该名称关联的消息。我快到了,但我似乎无法弄清楚出了什么问题。
目前,我在倒数第二个 useEffect 上收到“对象作为 React 子项无效”错误,其中代码中断,尽管 console.log 确实输出了一个具有正确的 id、名称和消息的对象人。任何人都可以帮助解决导致上述错误的原因,并解释我如何正确引用对象中的值。
import { useEffect, useState} from 'react'
function App() {
const messages = [
{
posterId: 0,
posterName: "Matt",
message: "This is Matt's test message"
},
{
posterId: 1,
posterName: "Gordon",
message: "This is Gordon's test message"
},
{
posterId: 2,
posterName: "Stuart",
message: "This is Stuart's test message"
},
]
const [posterId, setPosterId] = useState('')
const [theMessageData, setTheMessageData] = useState([])
const [messageArray, setMessageArray] = useState([])
const [theActualMessage, setTheActualMessage] = useState('')
function updatePoster(id) {
setPosterId(id)
}
useEffect(() => {
console.log("The ID is: ",posterId);
getIndividualMessage();
},[posterId])
function getIndividualMessage() {
const messageVar = messages.filter(message => message.posterId === posterId);
setTheMessageData(messageVar)
}
useEffect(() => {
console.log("theMessageData array is: ",theMessageData[0]);
setMessageArray(theMessageData[0])
},[theMessageData])
useEffect(() => {
console.log("The actual message is: ",messageArray.message);
},[messageArray])
return (
<>
<div>
<ul>
{ messages && messages.map(list => (
<li key={list.posterId}>
<button onClick={() => updatePoster(list.posterId)}>{list.posterName}</button>
</li>
))}
</ul>
</div>
<div>
<ul>
<li>{theActualMessage}</li>
</ul>
</div>
</>
);
}
export default App;
我确实尝试将上述内容放在片段中,但我根本无法让它发挥作用。非常感谢任何帮助。
干杯,马特
解决方案
推荐阅读
- webrtc - UFW 端口转发不适用于我的 coturn 设置
- vscode-extensions - 从 Azure Data Studio 扩展中执行 SQL?
- java - 无法解析符号“响应”
- python - 不理解 OpenCV GitHub Wiki 的“TensorFlow 对象检测”
- c - 如何在stm32 cube IDE中的main函数之前开始调试
- reactjs - 我的 api 函数在另一个文件或目录中我想在 react native 的另一个文件或目录中检查我的 api 响应数据
- python-3.x - 从顺序 API 模型转换为功能 API 模型
- javascript - 如何从本地存储项创建单独的列表项并将它们显示在待办事项列表中?
- flutter - 在 listView 中给出特定数字时出错
- python - 手动将 Python 移动到其他驱动器后卸载 Python