javascript - 避免在 React 组件中手动输入 URL

标签 javascript reactjs gatsby

我正在与 Gatsby 迈出第一步,我发现我经常重复自己。一个例子是创建链接,我在几个地方做了类似的事情:

import {kebabCase} from "lodash";

// ...
    <Link to={`tags/${kebabCase(tag)}`}>
      {tag}
    </Link>

在几个地方创建 to 参数感觉不对,当我决定更改 URL 格式时(例如: tag/... 而不是 tags/...)我将不得不更改所有出现的情况。

我知道 Django 框架通过使用“命名网址”解决了这个问题。您可以通过关键字识别 URL,并提供参数。然后它将返回格式正确的 URL。有类似 Gatsby 或 React 的这一部分的东西,或者有其他方法来解决这个问题吗?

天真地说,我的代码示例是:

import {urlmaker} from "urlutil"

//...
    <Link to={urlmaker(`tag`, { tagname: {tag} })}>
      {tag}
    </Link>

我认为这对于我自己实现来说并不太难,但我很好奇是否有任何标准化的 React 或 Gatsby 方法来处理这个问题。

最佳答案

您可以全局定义一个常量并使用它,这样您只需在需要时更改定义常量的值即可。例如。您可以定义开发和生产环境常量:

// Development Environment
const TAGS = 'tags';

// Production Environment
const TAGS = 'pro-tags';

然后您可以简单地使用该常量。

<Link to={`${TAGS}/${kebabCase(tag)}`}>

现在,当您的应用程序在生产环境中运行时,它将是“pro-tags”等等。

<小时/>

更新:您还可以创建一个组件并利用 props 来路由链接,以下只是一个示例:

export class OptionalLink extends React.Component {

    render( ) {

     return this.props.dateProp
       ? <Link to={`${this.props.dateProp}/${this.props.pathProp}`} {... this.props} />
       : <Link to={`${someDefaultDate}/${this.props.pathProp}}`} { ... this.props} />;

    }
};

现在,您可以使用<OptionalLink dateProps="2018-apr-23" pathProp={kebabCase(tag)} />

我希望你能这样管理。

关于javascript - 避免在 React 组件中手动输入 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49978602/

相关文章:

reactjs - 如何在 Gatsby 中实现 Three.js?

javascript - 如何将 JSON 中的正则表达式传递给 API?

javascript - 如何使用 div 元素构建 Recurly.js 表单?

javascript - 从 Firebase 中的特定 ID 列表中检索数据,关注用户并仅获取他们的帖子

javascript - 学习 React 概念证明

javascript - 如何从 JSON 文件在 Gatsby 中创建页面?

javascript - IE6 性能与 CSS 表达式

javascript - 按钮列表上的 onclick 事件无法使用 JQuery 工作

javascript - 在数组元素 React 之间切换

javascript - Gatsby 3.X + Netlify