I use the Ant Design for my WebApp. For the Card, there's a hoverable prop that make the card seams clickable but there's no onClick prop. How do I make it really clickable?
This is my Code:
import React, { Component } from 'react';
import { Card, Avatar, Icon, Button, Divider } from 'antd';
import EventDetailsDrawer from '../ui/EventDetailsDrawer';
const { Meta } = Card;
class EventCard extends Component {
render() {
return (
<div onClick={alert("Hello from here")}>
<Card
hoverable
cover={<img alt="example" src="https://assetsnffrgf-a.akamaihd.net/assets/m/1102015169/univ/art/1102015169_univ_lsr_lg.jpg" />}
bodyStyle={{ marginBottom: "-5px" }}
>
<Meta
//avatar={<Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />}
avatar={<Button type="primary" shape="circle-outline">{this.props.owner}</Button>}
title={this.props.title}
description={this.props.descp}
/>
<Divider style={{ marginLeft: "0px" }}></Divider>
<p><Icon type="clock-circle" style={{ fontSize: "15px", color: "#1890FE" }} theme="outlined" /><span style={{ marginLeft: "15px" }} />{this.props.date}</p>
<p><Icon type="environment" style={{ fontSize: "15px", color: "#1890FE" }} theme="outlined" /><span style={{ marginLeft: "15px" }} />{this.props.location}</p>
</Card>
<EventDetailsDrawer></EventDetailsDrawer>
</div>
);
}
}
export default EventCard
I try to make a dive (around the Card) clickable, but the Code runs immediately after the app is loaded, since I pack each card into a list item. How to make Card component clickable?
Thanks for your answer :)
You need to call an onClick event inside the Card component. Then if you need to pass some props, or use logic, just pass the function/content in the prop to Card . Something like that - <Card handleClick={this. handleClickMethod} /> .
You can include Action buttons within the Card and customize them. Action button is a div element with e-card-actions class followed by button tag or anchor tag within the card root element. For adding action buttons you can create button or anchor tag with e-card-btn class within the card action element.
Notice that what you are attaching to the div's onClick
listener is the value returned by alert
and not actually a function that should be run whenever the div is clicked.
Try changing this:
<div onClick={alert("Hello from here")}>
To this:
<div onClick={() => alert("Hello from here")}>
I came here with a similar question. What worked for me is to wrap the <Card>
with a <Link>
component. Also, setting the hoverable
property on the card will give it an effect that has it appear "clickable". For example:
<Link to={'/customer/list'}>
<Card hoverable>
// ... removed for brevity...
</Card>
</Link>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With