Typeerror:对象不是函数,或者其返回值在react 16.13.1中不可迭代



我使用的是react版本16.13.1。我在我的项目中已经使用了很多时间的钩子。但现在我甚至在使用它之前就收到了这个错误。

export default function TourData(props) {
const [collapsed, setCollapsed] = useState();
const withinDatacollapse = props.tourWithin.slice(1);
const withinDatashow = props.tourWithin.slice(0, 1);
function handleViewAll() {
setCollapsed(!collapsed);
}
function Object(props) {
return (
<div>
{props.data &&
props.data.map((item, index) => (
<div key={index} className="within">
<div
className="image"
style={{ background: `url(${item.image})` }}
>
<div className="destination">{item.country}</div>
</div>
<div className="options">
<div>
<h5>Options</h5>
<div className="user-select">
<Select
options={item.options}
placeholder={<h4>Select Option</h4>}
/>
</div>
</div>
</div>
<div className="date-select">
<div className="user-select">
<Select
options={item.date_options}
placeholder={<h4>Select Date</h4>}
/>
</div>
</div>
<div>
<button>Go!</button>
</div>
</div>
))}
</div>
);
}
return (
<div className="route">
<div className="list-box">
<Object data={withinDatashow} />
<Collapse in={collapsed}>
<Object data={withinDatacollapse} />
</Collapse>
<div className="bottom-view-section">
<button onClick={handleViewAll}>View All</button>
</div>
</div>
</div>
);
}

在这里,我刚刚声明了钩子,并得到了这个错误。我找不到哪里出了问题。

起初,我在进行映射时遇到了一个错误TypeError: Cannot read property 'map' of undefined,所以我不得不将props.data &&放在映射之前。

您不应该将组件命名为Javascript的关键字,如Object或class。

此外,您可能需要定义props.placeData的默认值,这样当它未定义时,就不会出现错误。

export default function AppMain({placeData = [], ...props}) {

或者,你也可以直接办理退货手续,然后说"没有地方"之类的话。这取决于你。

最新更新