【发布时间】:2021-01-19 05:33:51
【问题描述】:
我正在将数据从 Node JS 发送到数组对象中的 React JS。在 React JS 中,当我设置响应数据时,我收到错误“对象作为 React 子项无效(找到:带有键 {eventName,eventDate,merchantid} 的对象)。如果您打算呈现一组子项,请使用数组而是。”
我查看了一篇 Stackoverflow 帖子 useState Array of Objects。我也以同样的方式设置值,但出现错误。
下面是我从 Node JS 发送的数据。
[
{
eventName: 'Sankranti',
eventDate: 2021-01-21T00:00:00.000Z,
merchantid: 'tp012345'
},
{
eventName: 'Sankranti 1',
eventDate: 2021-01-26T00:00:00.000Z,
merchantid: 'tp012345'
}
]
在我的代码下方,我在 setEventList(eventList => [...eventList, response]) 处遇到错误。基于 cmets 我在下面添加了代码。
import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import Carousel from 'react-bootstrap/Carousel'
import axios from 'axios';
import DashboardNavBar from './DashboardNavBar';
import Header from './Header';
const DashboardPage = (props) => {
const [eventList, setEventList] = useState([])
const [index, setIndex] = useState()
if (!props.profileData) {
useEffect(() => {
(async () => {
const eventsList = await axios.get(
"http://localhost:3000/api/dashboard"
);
console.log(eventsList.data)
const response = eventsList.data
setEventList(eventList => [...eventList, response])
if(!response){
setErrorMsg('Please create Event and then add User !!')
}
})();
}, []);
}
const eventListRender = eventList.length > 0 ?
eventList.map((item,index) => {
console.log('item name: ', item[index].eventName)
return <Carousel.Item>{item[index].eventName}</Carousel.Item>
}) :
<Carousel.Item>No upcoming events</Carousel.Item>
const handleSelect = (selectedIndex) => {
console.log(eventList)
console.log(selectedIndex)
setIndex(selectedIndex)
}
return (
<div>
<DashboardNavBar />
<Header />
<p >Welcome !!!!!!</p>
<Carousel
activeIndex={index}
onSelect={handleSelect}
>
{eventListRender}
</Carousel>
</div>
);
}
const mapStateToProps = (state) => ({
profileData: state.auth.profileData
})
export default connect(mapStateToProps) (DashboardPage);
添加下面的代码后,它总是读取第一次出现
const eventListRender = eventList.length > 0 ?
eventList.map((item,index) => {
console.log('item name: ', item[index].eventName)
return <Carousel.Item>{item[index].eventName}</Carousel.Item>
}) :
<Carousel.Item>No upcoming events</Carousel.Item>
请查找更新后的结果
【问题讨论】:
-
这个错误发生在你试图渲染你的状态的地方,你能包括一个完整的组件代码示例吗?
-
一个看起来不对的地方是
response是一个数组,所以它应该是setEventList(eventList => [...eventList, ...response]) -
嗨 Drew Reese,我添加了如下代码,现在错误消失了,但现在没有读取对象(item.eventName = undefined)。常量 eventListRender = eventList.length > 0 ? eventList.map((item) => { console.log('item name: ', item.eventName) return
{item.eventName} }) :No即将发生的事件 -
您能否更新您的问题,即新代码,所以 cmets 不适用于代码块显示。那里的代码很难阅读。
-
这可能与错误消息没有直接关系,但您正在从不允许的条件中调用 useEffect 挂钩。 Hook Rules.
标签: reactjs react-hooks