【发布时间】:2020-07-06 01:09:58
【问题描述】:
我有一个自定义 Card 组件,它有一个“onClick”类型,可以像这样处理点击:
import React from 'react';
import styles from './card.module.css';
interface Card {
onClick: React.MouseEventHandler<HTMLDivElement>;
}
const Card: React.FC<Card> = ({ children }) => {
return <div className={styles.card}>{children}</div>;
};
export default Card;
我正在使用Card 组成另一个名为PostCard 的组件,如下所示:
import React from 'react';
import Card from '../Card';
import styles from './postcard.module.css';
import { useRouter } from 'next/router';
type PostCard = {
title: string;
description: string;
slug: string;
};
const PostCard: React.FC<PostCard> = ({ title, description, slug }) => {
const router = useRouter();
const handleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {
console.log('here');
e.preventDefault();
router.push('/blog/[slug]', `/blog/${slug}`, { slug });
};
return (
<Card onClick={handleClick}>
<h2 className={styles.title}>{title}</h2>
<p className={styles.paragraph}>{description}</p>
</Card>
);
};
export default PostCard;
当点击PostCard 时,我希望它使用next.js 中的router 函数并将页面推送到新页面。然而,当我点击PostCard 时,什么也没有发生。这是怎么回事? handleClick 没有将任何内容打印到控制台,所以我很确定 Card 组件没有注册点击。我应该将 onClick 函数传递给Card 组件吗?
【问题讨论】:
标签: javascript reactjs typescript next.js