【发布时间】:2021-10-19 07:53:04
【问题描述】:
问题: 在我的子组件中: TypeError: items.map 不是函数
我不明白为什么不这样做,我看到其他人在映射不是数组的东西时遇到了这个问题。然而我的显然是。如父组件的第四行所示。
母公司:
import React, {useState} from 'react';
import ListItem from '../components/listItem';
const Pagethree = () => {
const[items,setItem] = useState([]);
return(
<div>
<CreateItem items={items} setItem={setItem}/>
<ListItem items={items}/>
</div>
)
};
export default Pagethree;
儿童比赛 1:
import React, {useState} from "react";
const ListItem = (props) =>{
const {items} = props;
return(
<div>
<h1>list item comp</h1>
<ul>
{
items.map((item, i) =>
<div class="flex">
<input type="checkbox" />
{item}
<button>delete</button>
</div>
)
}
</ul>
</div>
)
};
export default ListItem;
子组件 2:
import React from "react";
const CreateItem = (props) =>{
const {items, setItem} = props;
const addItem = (e) =>{
e.preventDefault();
setItem([...items, items]);
setItem("");
console.log(items);
}
return(
<div>
<h1>create item comp</h1>
<form onsubmit={addItem}>
<input type="text" value={items} onChange={e => setItem(e.target.value)}/>
<button type="submit">add item</button>
</form>
</div>
)
};
export default CreateItem;
【问题讨论】:
-
您发布的代码对我来说看起来不错。错误是立即发生还是在第一次
setItem()调用之后发生?我假设您将items设置为那里不是数组的东西。 -
.map 仅适用于数组,我担心项目可能已更改为对象或任何其他数据类型。
-
这是
Pagethree组件的全部吗?您当前在 sn-p 中的内容是正确的,不应引发任何错误。您稍后会更新items状态吗?如果是这样,请在您的问题中包含所有相关代码。如果您正在更新状态,那么还请分享您将其更新到的内容(您入队的 值)。 -
我确实有另一个用于创建对象的组件。我在上面添加了代码。一旦我在输入中输入任何内容,就会出现错误
-
为什么要在addItem中设置item为空字符串?为什么在 on change 中将 items 设置为事件的 target.value?