reactjs - 为什么这会引发 TypeError?
问题描述
我有一个应该映射“人员”状态并返回“人员”列表的反应组件,它可以很好地显示列表,并且 deletePersonHandler 仍然有效,但是当我开始输入输入时,它会引发 TypeError。
TypeError:props.persons.map 不是函数
我对 JS 很陌生,对 React 也很陌生,所以任何指针都将不胜感激!
我的人员组件:
const persons = (props) =>
props.persons.map((person, index) => {
return (
<Person
click={() => props.clicked(index)}
name={person.name}
age={person.age}
//each item in a list needs a key, should be unique and unchanging
key={person.id}
changed={(event) => props.changed(event, person.id)} />
)
});
然后在 App.js 我有
let people = null;
if (this.state.showPersons) {
people = (
<div>
<Persons
persons = {this.state.persons}
clicked = {this.deletePersonHandler}
changed = {this.nameChangedHandler}
/>
</div>
);
}
最后,我的 nameChangedHandler 也在 App.js 中
nameChangedHandler = (event, id) => {
const personIndex = this.state.persons.find(p => {
return p.id === id;
});
const person = {...this.state.persons[personIndex]};
person.name = event.target.value;
person[personIndex] = person;
this.setState({ persons: person });
}
我希望名称在您键入时会更改,但是一旦您开始键入,就会抛出 typeerror
非常感谢!
解决方案
这是因为人是一个对象。并且 .map 是数组独有的函数,而不是props.persons.map
尝试类似Object.keys(props.persons).map
文档在Object.keys()
这里https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
希望有所帮助(:
推荐阅读
- reactjs - 使用 -p 标志时出现 webpack 错误
- sql - 如何在Oracle中多次更新与另一个表连接的表?
- python - 如何找到正值最接近零的熊猫记录?
- xaml - 资源字典:System.InvalidCastException
- c# - 我想将一个特定列从我的 DataGrid 导出到 Excel
- mysql - MySQL NOT IN 查询给出错误结果
- reactjs - Material Icons 只是渲染文本,React Materialize
- python - Python3 - 如何按元素的频率对列表进行排序?
- php - 为什么我在 Yii Interactive Tool v1.1 中找不到 rbac 选项(基于 Yii v1.1.5)
- python - 在python 3中取消缩短网址