reactjs - 如何在迭代中显示 JSX 中的数据?
问题描述
问题是当我 console.log 时变量具有值,但它没有在页面中呈现。循环只打印第一个数据,其他数据不打印。
const langData = [
{
name: "Front-End",
children: [
{
name: "HTML"
},
{
name: "CSS"
},
{
name: "JS"
}
]
}
];
const renderName = ({ name, children }) => {
console.log(name);
return (
<>
<p>{name}</p>
{children && children.forEach(newData => renderName(newData))}
</>
);
};
const App = () => {
return <div className="App">{renderName(langData[0])}</div>;
};
例如:前端将在页面上。页面中未显示的其他数据,例如 HTML、CSS、JS。但是这些变量在console.log 中。不确定我是否想返回任何值。
Codesandbox 链接:https ://codesandbox.io/s/reverent-ardinghelli-6snby?fontsize=14
解决方案
使用 map 你可以遍历数组。map 有效而 forEach 无效的原因是 map 返回一个新数组,而 forEach 不返回任何内容(返回未定义)。您还需要添加键以消除警告。我在这里使用数组的索引作为键:
const renderName = ({ name, children }, key) => {
console.log(name);
return (
<>
<div key={key}>
<p>{name}</p>
{children && children.map((newData,index) => renderName(newData, index))}
</div>
</>
);
};
推荐阅读
- python - 如何在字典中编写一个唯一的字典,并将列表作为 csv 文件的键?
- performance - 立即采取哪些措施来减少我网站上的首次内容绘制时间?
- javascript - 如何在 JavaScript 中将数组转换为对象?
- python - 如何将所有 ipython 输出保存在文件中?(也许像 html?)
- spring - 模板解析出错,无法使用
- javascript - history.back() 和 history.forward() 方法不起作用
- java - 如何时间戳/解码实时 Firebase 数据库以按时间顺序显示
- django - Django 错误:赋值前引用了局部变量 'fav'
- statistics - 面积/大小 美国邮政编码
- macos - 在 Mac 上安装 casperjs 的困难