You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将const targetCV传入React组件的href属性?

解决方案

原代码里targetCV是onDownloadCV函数的局部变量,没法直接传递给<a>的href属性。而且当前写法依赖点击时动态加载文件,其实可以直接根据当前语言提前生成CV的链接,让<a>标签直接完成下载操作,更简洁高效。

方法一:直接根据语言生成链接(推荐)

组件渲染时就根据当前语言计算CV路径,语言切换时会自动更新,无需额外点击事件处理:

import { useTranslation } from "react-i18next";

const CTA = () => {
    const { t, i18next } = useTranslation();
    const lang = i18next.language;
    // 仅在语言为pt/en时生成有效路径,否则设为#避免无效跳转
    const cvUrl = (lang === "pt" || lang === "en") ? require(`../assets/cv_${lang}.pdf`) : "#";

    return(
        <div className="cta">
            <a href={cvUrl} download className="btn">{t("downloadCV")}</a>
            <a href="#contact" className="btn btn-primary">{t("contactButton")}</a>
        </div>
    );
};

export default CTA;

方法二:通过状态存储路径(适合需额外点击逻辑的场景)

如果需要在下载前执行额外操作(比如日志统计),可以用状态变量存储生成的路径:

import { useTranslation, useState } from "react-i18next";

const CTA = () => {
    const { t, i18next } = useTranslation();
    const [cvUrl, setCvUrl] = useState("#");

    const onDownloadCV = () => {
        const lang = i18next.language;
        if(lang === "pt" || lang === "en"){
            const targetCV = require(`../assets/cv_${lang}.pdf`);
            setCvUrl(targetCV);
            // 这里可以添加额外逻辑,比如记录下载行为
        }
    };

    return(
        <div className="cta">
            <a href={cvUrl} onClick={onDownloadCV} download className="btn">{t("downloadCV")}</a>
            <a href="#contact" className="btn btn-primary">{t("contactButton")}</a>
        </div>
    );
};

export default CTA;

内容的提问来源于stack exchange,提问作者Caio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:36:19