类型 '({ articles }: Props) => JSX.Element' 不可分配给类型 'NextPage<{}, {}>'
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'NextPage<{}, {}>'
我之前使用过 Vue.js 之后才进入 React.js 和 Next.js。我遇到了一个奇怪的打字稿错误,但奇怪的是,尽管 VS Code 向我抱怨它好像无法编译,但它实际上编译了。
我正在尝试将 Article
的数组作为 prop 传递到我的主组件中。
这里是相关代码:
interface Article {
userId: number;
id: number;
title: string;
body: string;
}
interface Props {
articles: Article | Article[];
}
const Home: NextPage = ({ articles }: Props) => {
return (
<div>
{/* some stuff */}
</div>
);
};
Home
带有红色下划线,当我将鼠标悬停在上面时会出现错误:
const Home: NextPage<{}, {}>
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'NextPage<{}, {}>'.
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'FunctionComponent<{}> & { getInitialProps?(context: NextPageContext): {} | Promise<{}>; }'.
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'FunctionComponent<{}>'.
Types of parameters '__0' and 'props' are incompatible.
Property 'articles' is missing in type '{ children?: ReactNode; }' but required in type 'Props'.
任何有关这里可能发生的事情的帮助或见解将不胜感激。
你可以这样写:
import React , {FC} from 'react';
interface Article {
userId: number;
id: number;
title: string;
body: string;
}
interface HomeProps {
articles: Article[];
}
const Home : FC<HomeProps> = ({articles}) => {
console.log('articles: ', articles)
return (
<div>
{/* some stuff */}
</div>
);
};
并在容器中:
const myArticles = [
{
userId: 1,
id: 1,
title: 'my title',
body: 'my body',
}
]
...
return (
<Home articles={myArticles}>
)
这样称呼,
const Home: NextPage<Props> = ({ articles }) => {//your code}
您使用的是 NextPage 类型,我也使用了它。实际上使用 const Home: NextPage 会更好,因为它会同时输入组件的 props 和 return type.
我之前使用过 Vue.js 之后才进入 React.js 和 Next.js。我遇到了一个奇怪的打字稿错误,但奇怪的是,尽管 VS Code 向我抱怨它好像无法编译,但它实际上编译了。
我正在尝试将 Article
的数组作为 prop 传递到我的主组件中。
这里是相关代码:
interface Article {
userId: number;
id: number;
title: string;
body: string;
}
interface Props {
articles: Article | Article[];
}
const Home: NextPage = ({ articles }: Props) => {
return (
<div>
{/* some stuff */}
</div>
);
};
Home
带有红色下划线,当我将鼠标悬停在上面时会出现错误:
const Home: NextPage<{}, {}>
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'NextPage<{}, {}>'.
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'FunctionComponent<{}> & { getInitialProps?(context: NextPageContext): {} | Promise<{}>; }'.
Type '({ articles }: Props) => JSX.Element' is not assignable to type 'FunctionComponent<{}>'.
Types of parameters '__0' and 'props' are incompatible.
Property 'articles' is missing in type '{ children?: ReactNode; }' but required in type 'Props'.
任何有关这里可能发生的事情的帮助或见解将不胜感激。
你可以这样写:
import React , {FC} from 'react';
interface Article {
userId: number;
id: number;
title: string;
body: string;
}
interface HomeProps {
articles: Article[];
}
const Home : FC<HomeProps> = ({articles}) => {
console.log('articles: ', articles)
return (
<div>
{/* some stuff */}
</div>
);
};
并在容器中:
const myArticles = [
{
userId: 1,
id: 1,
title: 'my title',
body: 'my body',
}
]
...
return (
<Home articles={myArticles}>
)
这样称呼,
const Home: NextPage<Props> = ({ articles }) => {//your code}
您使用的是 NextPage 类型,我也使用了它。实际上使用 const Home: NextPage 会更好,因为它会同时输入组件的 props 和 return type.