arrays - 无法从 Node.js 服务器映射 JSON 对象数组,但局部变量在 React 中工作正常
问题描述
运行带有 Node.js 后端的 React 前端应用程序。MongoDB作为数据库。
我目前遇到一个莫名其妙的情况,我无法从我的服务器映射这个数组“giftingEvents”。
{
"categories": [
],
"interests": [
"rabbits",
"mansions"
],
"giftingEvents": [
{
"eventName": "Birthday",
"eventDate": "1948-11-01T16:00:00Z"
},
{
"eventName": "Christmas",
"eventDate": "1948-12-25T16:00:00Z"
}
],
"_id": "5f1f55630e37e981d401435d",
"firstName": "Hugh",
"lastName": "Heffner",
"age": 97,
"dateCreated": "2020-07-27T22:29:55.866Z",
"__v": 0
}
当我尝试从道具映射此数组中的对象时,我收到 typeError
但是,当我从服务器复制并粘贴 JSON 并将其用作代码中的变量时,我没有收到 typeError。
请注意我如何从 props 访问 firstName 和 lastName,但只能从局部变量访问 giftingEvents。
这是这个数组出现在我为 Hugh Heffner 的道具中的证据
我已经测试了映射其他不包含来自道具 IE-“兴趣”的对象的数组,并且没有任何问题。
"interests": [
"rabbits",
"mansions"
],
在这里你可以看到我是如何将道具设置为一个变量“giftedPerson”的,我已经改变了好几次,只是为了尝试自己进行健全性检查。
这是我尝试从可用道具映射的整个文件。
import React from 'react';
import '../App.css';
import styled from 'styled-components';
const PersonInfoWrapper = styled.div`
width: 90%;
background-color: #4d4e5d;
color: white;
margin: auto;
text-align: left;
padding: 10px;
margin: 3px;
border-radius: 4px;
font-size: x-large;
`;
const PersonInfoItem = styled.span`
padding-left: 7px;
`;
class PersonInfo extends React.Component {
constructor(props) {
super(props)
this.state = {
}
}
componentDidMount(){
}
render() {
let giftedPerson = this.props.giftedPerson.giftedPerson
let giftingEvents = this.props.giftedPerson.giftedPerson.giftingEvents
let hugh = {
"categories": [
],
"interests": [
"rabbits",
"mansions"
],
"giftingEvents": [
{
"eventName": "Birthday",
"eventDate": "1948-11-01T16:00:00Z"
},
{
"eventName": "Christmas",
"eventDate": "1948-12-25T16:00:00Z"
}
],
"_id": "5f1f55630e37e981d401435d",
"firstName": "Hugh",
"lastName": "Heffner",
"age": 97,
"dateCreated": "2020-07-27T22:29:55.866Z",
"__v": 0
}
return (
<PersonInfoWrapper>
<PersonInfoItem>Name: {giftedPerson.firstName} {giftedPerson.lastName}</PersonInfoItem>
{hugh.giftingEvents.map((event, index) => (
<div key={index} event={event}>{event.eventName}</div>
))}
</PersonInfoWrapper>
);
}
}
export default PersonInfo;
我知道这可能是非常简单的事情,但我已经尝试解决这个问题三天了:(
解决方案
就我所见,您使用的是不包含“giftingEvents”属性的不同对象。我可以在您的第三张图片中看到,新对象以“__v”结尾并以“类别”开头,这让我认为这是另一个属性,但我不能从这里真正分辨出来,当然当您使用 Hugh 对象时它会工作,因为它不在另一个对象内,试试这个,如果这不起作用,请向我们展示你从道具收到的整个对象(如果可能的话):
{giftedPerson[1].giftingEvents.map((event, index) => (
<div key={index} event={event}>{event.eventName}</div>
))}
推荐阅读
- python - 将 Python export_text 决策规则转换为 SAS IF THEN DO;结束代码
- sorting - sbcl 注意“无法堆栈分配”
- batch-file - 如何在以下代码中免除文件或文件夹删除
- java - LibGDX:在 Android 中渲染时质量很差
- php - 如何在 Wordpress 中按类别获取所有帖子
- java - 文件名包含特殊字符的 Java Spring Boot 下载文件生成零字节下载文件
- opengl - Opengl:SSAO 与阴影映射
- excel - 仅查找并匹配 2 列中的前 5 个字符
- jenkins - 将地图字符串列表转换为地图列表作为groovy中的对象列表
- reactjs - 从对象 React Native 渲染