Gatsby: Variabel dalam penurunan harga?

Dibuat pada 28 Nov 2018  ·  1Komentar  ·  Sumber: gatsbyjs/gatsby

Ringkasan

Apakah ada cara untuk memiliki variabel di halaman penurunan harga yang akan diganti dengan nilai? Saya menulis dokumentasi tentang layanan yang berupa URL. URL-nya ada dalam beberapa file penurunan harga dan saya tidak ingin mencari dan menggantinya jika ada perubahan.

Apakah pilihan terbaik saya untuk menambahkan komponen kustom di Penurunan Harga? Sepertinya berat untuk ini.

question or discussion

Komentar yang paling membantu

Anda dapat menulis pembantu khusus untuk ini (atau gunakan sesuatu seperti lodash.template https://lodash.com/docs/4.17.11#template)

Inilah solusi cepat dan kotor:

Diberikan file penurunan harga sample.md dengan isi sebagai berikut:

---
title: Sample
---

## Hello World

This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)

Anda dapat membuat file (sebut saja src/utils/template.js ) dan menulis sesuatu seperti ini

export default function template(content, data) {
  return content.replace(/%(.+)%/g, (match, key) => {
    const value = data[key]
    if (typeof value !== 'undefined') {
      return value
    }
    return match // guards against some unintentional prefix
  });
}

Sekarang menghubungkan semuanya, Anda hanya perlu _menggunakan_ fungsi templat ini untuk mengganti konten Anda. Objek data dapat berupa apa pun yang Anda inginkan dan dapat ditarik dari mana saja (mis. Graphql, beberapa file konstanta, variabel lingkungan, dll.).

import React from 'react'

import template from '../utils/template';

const URL = 'https://google.com'; // this can be from wherever

export default function SomeMarkdownPage({ data }) {
  // data is from GraphQL, presume the parent is data.markdown
  return (
    <div dangerouslySetInnerHTML={{
      __html: template(data.markdown.html, {
        URL
      })
    }} />
  )
}

Apakah ini masuk akal? Ini juga bisa menjadi plugin gatsby-comment- yang cukup berguna, tapi saya tidak yakin itu ada! Jika Anda memiliki minat untuk menulis itu, itu keren, tetapi untuk saat ini, ini pasti akan berfungsi untuk kasus penggunaan Anda!

Akan menutup ini sebagai dijawab, tetapi silakan buka kembali jika ada di antara kami yang dapat membantu lebih lanjut. Terima kasih telah menggunakan Gatsby!

>Semua komentar

Anda dapat menulis pembantu khusus untuk ini (atau gunakan sesuatu seperti lodash.template https://lodash.com/docs/4.17.11#template)

Inilah solusi cepat dan kotor:

Diberikan file penurunan harga sample.md dengan isi sebagai berikut:

---
title: Sample
---

## Hello World

This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)

Anda dapat membuat file (sebut saja src/utils/template.js ) dan menulis sesuatu seperti ini

export default function template(content, data) {
  return content.replace(/%(.+)%/g, (match, key) => {
    const value = data[key]
    if (typeof value !== 'undefined') {
      return value
    }
    return match // guards against some unintentional prefix
  });
}

Sekarang menghubungkan semuanya, Anda hanya perlu _menggunakan_ fungsi templat ini untuk mengganti konten Anda. Objek data dapat berupa apa pun yang Anda inginkan dan dapat ditarik dari mana saja (mis. Graphql, beberapa file konstanta, variabel lingkungan, dll.).

import React from 'react'

import template from '../utils/template';

const URL = 'https://google.com'; // this can be from wherever

export default function SomeMarkdownPage({ data }) {
  // data is from GraphQL, presume the parent is data.markdown
  return (
    <div dangerouslySetInnerHTML={{
      __html: template(data.markdown.html, {
        URL
      })
    }} />
  )
}

Apakah ini masuk akal? Ini juga bisa menjadi plugin gatsby-comment- yang cukup berguna, tapi saya tidak yakin itu ada! Jika Anda memiliki minat untuk menulis itu, itu keren, tetapi untuk saat ini, ini pasti akan berfungsi untuk kasus penggunaan Anda!

Akan menutup ini sebagai dijawab, tetapi silakan buka kembali jika ada di antara kami yang dapat membantu lebih lanjut. Terima kasih telah menggunakan Gatsby!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat