Массив
const props: NavButtonProps[] = [
{
text: "Home",
url: "teste"
},
{
text: "Services",
url: "teste"
},
{
text: "projects",
url: "teste"
}
]
где используется карта метода
const NavButtonWrapper = (buttons: NavButtonProps[]): ReactElement => {
return (
<div className = "flex space-x-16">
{ buttons.map((button) => { return (<NavButton {...button}/>)})}
</div>
)
}
Я уже видел несколько случаев, когда это работает, но я не знаю, почему в моем коде он возвращает кнопки. Карта не является функцией.
Компоненты всегда получают один параметр (props
), который всегда является объектом. Вы пытаетесь использовать buttons
напрямую, а не обращаться к нему через реквизиты.
Это просто синтаксическая ошибка, вы можете попробовать удалить () после оператора return, Найдите приведенный ниже код
{buttons.map((кнопка) => {
return <NavButton {...button} />;
})}
Спасибо, надеюсь, это поможет.
Синтаксическая ошибка приводит к тому, что .map
не функция?
попробуйте так:
import React from 'react';
interface NavButtonProps {
text: string;
url: string;
}
const App: React.FC = () => {
const buttons: NavButtonProps[] = [
{
text: 'Home',
url: 'test',
},
{
text: 'Services',
url: 'test',
},
{
text: 'Projects',
url: 'test',
},
];
// This is only for testing, you can replace it with your own component
const NavButton: React.FC<NavButtonProps> = ({ text, url }) => {
return (
<li className = "nav-button">
<a href = {url}>{text}</a>
</li>
);
};
const NavButtonWrapper: React.FC = () => {
return (
<div className = "flex space-x-16">
{buttons.map((button, index) => (
<NavButton key = {index} {...button} />
))}
</div>
);
};
return (
<div>
<NavButtonWrapper />
</div>
);
};
export default App;
Деструктурируйте реквизит, чтобы получить доступ к реквизиту кнопок.
const NavButtonWrapper = ({ buttons } : { buttons: NavButtonProps[] }) => (
<div className = "flex space-x-16">
{buttons.map(button => <NavButton {...button}/>)}
</div>
);
Вероятно, вам нужно объявить
interface NavButtonWrapperProps { buttons: NavButtonProps[]; }
, а затем использовать его в своем компоненте-оболочке.