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.
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!
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:Anda dapat membuat file (sebut saja
src/utils/template.js
) dan menulis sesuatu seperti iniSekarang 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.).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!