По умолчанию вы не можете этого сделать, потому что filename
props - это атрибут download
тега <a />
, который является встроенным HTML.и генерируется при рендеринге.
<a download="10-36-45.csv" target="_blank" href="">Export To CSV</a>
Но есть способ взлома, который вы можете сделать, используя React Refs для изменения атрибута тега <a>
.
export default class extends Component {
$CSVLink = React.createRef();
getFileName() {
let d = new Date();
let dformat = `${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;
console.log("getCurrentDate : ", dformat);
return "GridWidget_" + dformat + ".csv";
}
render() {
const data = [
{ firstname: "Ahmed", lastname: "Tomi", email: "ah@smthing.co.com" },
{ firstname: "Raed", lastname: "Labes", email: "rl@smthing.co.com" },
{ firstname: "Yezzi", lastname: "Min l3b", email: "ymin@cocococo.com" }
];
return (
<CSVLink
onClick={() => {
this.$CSVLink.current.link.download = this.getFileName();
}}
ref={this.$CSVLink}
data={data}
filename={this.getFileName()}
className="btn btn-primary"
target="_blank"
>
Export To CSV
</CSVLink>
);
}
}
Я изменяю метод getFileName
, так как у меня нет информации о this.padLeft
, метод getFileName
вернет текущую дату, чтобы вы могли увидеть вторые изменения.