gpt4 book ai didi

javascript - react | Items.map 不是一个函数

转载 作者:行者123 更新时间:2023-11-28 12:56:22 25 4
gpt4 key购买 nike

我正在使用 Downshift,以便创建一个显示一些菜单选项的下拉菜单。我创建了一个可重用的 React 组件,但现在我收到此错误:

Uncaught TypeError: items.map is not a function
at IconDropdown.react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement.react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement (index.jsx:29)

这是该错误所引用的代码:

{isOpen ? (
<div className="dropdown-menu">
{items.map(item => ( // Specifically this map
<button
type="button"
{...getItemProps({ item })}
key={item}
className="dropdown-item"
>
<Icon icon={item.icon} /> {item.name}
</button>
))}
</div>
) : null}

我在主屏幕组件中使用它,如下所示:

 items = {
editUser: {
name: 'Edit Info',
icon: 'pencil-square-o'
},
changePassword: {
name: 'Change Password',
icon: 'lock'
},
deleteUsed: {
name: 'Delete user',
icon: 'trash-o'
}
};

render() {
return (
<IconDropdown items={this.items} />
)}

预期行为:呈现菜单项列表及其相应的图标。

当前行为:我收到上述错误。我不确定这段代码有什么问题。在我看来这是正确的。

如果您愿意,我可以发布整个组件,请告诉我。

更新,整个下拉组件:

import React, { Fragment } from 'react';
import PropTypes from 'prop-types';

import Downshift from 'downshift';

import Icon from 'lenses/common/components/Icon';

import './styles.scss';

const IconDropdown = ({ items, ...otherProps }) => (
<Fragment>
<Downshift {...otherProps}>
{({ getItemProps, isOpen, toggleMenu }) => (
<div>
<div className="btn-group">
<button
id="my-select"
type="button"
className="btn btn-primary dropdown-toggle dropdown-toggle-split"
onClick={toggleMenu}
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded={isOpen}
>
<span className="sr-only">Toggle Dropdown</span>
</button>
{isOpen ? (
<div className="dropdown-menu">
{items.map(item => (
<button
type="button"
{...getItemProps({ item })}
key={item}
className="dropdown-item"
>
<Icon icon={item.icon} /> {item.name}
</button>
))}
</div>
) : null}
</div>
</div>
)}
</Downshift>
</Fragment>
);

IconDropdown.propTypes = {
items: PropTypes.shape({
name: PropTypes.string.isRequired,
icon: PropTypes.string
})
};

export default IconDropdown;

最佳答案

.map 不存在于对象 {} 中,它仅存在于数组 [] 中。您可以:

  • 将对象更改为数组
  • 使用Object.keys(items).map(...)
  • 使用lodash.map

关于javascript - react | Items.map 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55137072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com