【发布时间】:2019-11-16 05:14:19
【问题描述】:
我的 node.js MySQL 查询返回包含在 [RowPacketData] 中的单行,我通常可以使用 results[0].ID 访问 ID 字段。
但是,当我将结果存储在 React 状态(使用钩子)时,它不起作用。我可以访问结果对象,但不能访问其中的字段。
function MyReactComponent() {
const [dbEntry, setDbEntry] = useState();
useEffect(() => {
const fetchData = async () => {
const result = await queryFunc(`SELECT * FROM table LIMIT 1`);
console.log(result[0]); // <-- Works (shows [RowDataPacket] object)
console.log(result[0].ID); // <-- Works (shows ID)
setDbEntry(result);
};
fetchData();
}, []);
console.log(dbEntry[0]); // <-- Works (shows [RowDataPacket] object)
console.log(dbEntry[0].ID); // <-- TypeError: Cannot read property '0' of undefined
return (
<p>
{dbEntry[0].ID} // <-- How do I render here?
</p>
)
}
这里发生了什么?我有一种感觉 React 正在以某种方式强制 result 对象,但我无法弄清楚......
【问题讨论】: