javascript - 映射可迭代道具对象的问题
问题描述
在处理 React 自己的文档中的示例时,我无法协调我一直遇到的错误。
似乎每当我将 props 对象传递给函数组件,然后映射到存储在 props 中的可迭代对象(在本例中为存储在 中的数组numbers
)时,该对象在进入映射操作时不再可用并返回未定义。
这是我的代码;React 文档中提供的许多片段之一,我观察到在这种情况下失败了:
import React from 'react';
import ReactDOM from 'react-dom';
function ListItem(props) {
return (
<li>{props.value}</li>
);
}
function NumberList(props) {
const numbers = props.numbers;
console.log(numbers, typeof numbers);
const listItems = numbers.map((number) =>
<ListItem key={number.toString()}
value={number} />
);
return (
<ul>Feel-Better Chicken and Rice Soup
{listItems}
</ul>
);
}
const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(
<NumberList numbers={numbers} />,
document.getElementById('root')
);
export default NumberList;
我在第 13 行包含了一个 console.log 用于调试目的,这是错误输出的图像(显示代码执行中断的位置):
我正在查看文档以使用最新版本的 Create-React-App 进行练习。我在 package.json 中的依赖如下:
"dependencies": {
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-scripts": "2.1.5"
}
对我来说似乎很奇怪的一件事是控制台输出中的第三个错误行引用了renderWithHooks
. 我还没有开始学习钩子,因为在继续学习钩子之前,我一直在努力巩固对 React 基本概念的理解。我不想听起来像个白痴,但是由于 React 文档中提供的许多类似示例片段都不起作用(它们仅在 CodePen 示例中起作用),最新版本的 React (16.8) 可能不兼容使用我在文档中遵循的语法?
否则,我不知道为什么这些示例不起作用。
任何帮助,将不胜感激
解决方案
事实证明,不,这不是我的全部代码。该错误是由于ReactDOM.render()
在 Create-React-App 的 index.js 文件中再次调用造成的。
现在我已经将NumberList
组件和numbers
数组都导入到 index.js 中,调用ReactDOM.render()
那里会使用预期的输出更新 UI。
推荐阅读
- javascript - javascript更新时下拉(选择)文本不刷新
- r - 带日历年的样条模型
- kotlin-coroutines - 如何理解使用范围调用协程的顺序?
- python - 替换为多行正则表达式
- android - Android 10 中带有 CollapsingToolbarLayout 的 Fragment 中的滚动和后退按钮不起作用
- html - 从设计中相对从容器中取出物品
- gmail-api - 在 django 400 错误中使用 google 进行社交登录
- javascript - 如何通过比较javascript中的检查值来获取对象/数组的索引
- java - 将数据从 Fragment 传递到 Fragment 但 bundle = null
- c# - 有没有办法只将当前属性值分配给另一个属性,以便以后更改值时它不会更新?UWP C#