javascript - 错误:对象作为 React 子项无效。如果您打算渲染一组子项,请改用数组。从 JSON 获取数据
问题描述
伙计们!我正在使用 ReactJS 创建一个小型网站。由于我添加了以下代码,它开始显示错误:Objects are not valid as a React child。如果您打算渲染一组子项,请改用数组。
代码:
import { useState, useEffect } from 'react';
import { motion, useAnimation } from 'framer-motion';
import './css/App.min.css';
import config from './config';
function App() {
return (
<div className="myskills">
<Skills skillType="coding" />
</div>
);
}
function Skills(props){
const skillType = props.skillType;
const result = config.skills.filter(skill => skill.cat == skillType);
console.log(result);
result.map((skill, index) => (
<div className="singleSkill" key={index}>
{skill.name} Level: {skill.level}
</div>
));
return (<div>{result}</div>);
}
配置文件
{
"skills": [
{
"name": "HTML",
"level": 5,
"cat": "coding"
},
{
"name": "CSS",
"level": 5,
"cat": "coding"
},
{
"name": "PHP",
"level": 4,
"cat": "coding"
}
]
}
有什么想法有什么问题吗?
解决方案
您的组件中的 return 语句Skills
基本上就是这样的:
return (config.skills.filter(skill => skill.cat == skillType));
因此“对象作为 React 子项无效”错误。
由于result.map
不修改原始数组,因此更好的解决方案可能如下所示:
function Skills(props) {
const skillType = props.skillType;
const result = config.skills.filter(skill => skill.cat == skillType);
return (
<div>
{result.map((skill, index) => (
<div className="singleSkill" key={index}>
{skill.name} Level: {skill.level}
</div>
))}
</div>
);
}
推荐阅读
- vue.js - 如何在 Vuejs 中测试受保护的路由保护的访问?
- react-native - 如果值更改,图标会更改
- google-apis-explorer - 在 Cloud AutoML Vision 中将图像导入 Google 存储时出错
- javascript - 如何在对象中深入了解此 JSON 对象
- c# - web.config 中到一个 SQL DB 的两个连接字符串在调试时工作,但在发布时不工作
- r - 如何使用 ggpmisc 的 stat_poly_eq 在方程中显示不同的 y 标签
- c# - 在 C# 中解析 JCR XML 导出
- ios - flutter build ios hava some questions library not found for -lBSGridCollectionViewLayout
- sql - 创建表时计算的布尔列
- model - 如何将数据从模型类转换为列表