هل هناك طريقة للحصول على متغيرات في صفحات التخفيضات التي سيتم استبدالها بالقيم؟ أنا أكتب وثائق حول خدمة مثل URL. عنوان URL موجود في ملفين من ملفات تخفيض السعر وأود ألا أضطر إلى العثور عليه واستبداله في حالة تغييره.
هل أفضل خيار لدي لإضافة مكون مخصص في Markdown؟ يبدو ثقيل الوطأة على هذا.
يمكنك كتابة مساعد مخصص قليلاً لهذا (أو استخدام شيء مثل lodash.template
https://lodash.com/docs/4.17.11#template)
إليك حل سريع وقذر:
إعطاء ملف تخفيض السعر sample.md
بالمحتويات التالية:
---
title: Sample
---
## Hello World
This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)
يمكنك إنشاء ملف (دعنا نسميه src/utils/template.js
) وكتابة شيء مثل هذا
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
});
}
الآن قم بتوصيلها جميعًا معًا ، ستحتاج فقط إلى _ استخدام_ وظيفة القالب هذه لاستبدال المحتوى الخاص بك. يمكن أن يكون الكائن data
كل ما تريد ويمكن سحبه من أي مكان (على سبيل المثال ، Graphql ، بعض ملفات الثوابت ، متغيرات البيئة ، إلخ).
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
})
}} />
)
}
هل لهذا معنى؟ قد يكون هذا ملحقًا مفيدًا إلى حد ما لملاحظة gatsby ، لكنني لست متأكدًا من وجوده! إذا كان لديك أي اهتمام بكتابة ذلك ، فسيكون ذلك رائعًا ، ولكن في الوقت الحالي ، سيعمل هذا بالتأكيد مع حالة الاستخدام الخاصة بك!
سيتم إغلاق هذا كما تم الرد ، ولكن لا تتردد في إعادة فتحه إذا كان بإمكان أي منا تقديم المزيد من المساعدة. شكرا لاستخدامك Gatsby!
التعليق الأكثر فائدة
يمكنك كتابة مساعد مخصص قليلاً لهذا (أو استخدام شيء مثل
lodash.template
https://lodash.com/docs/4.17.11#template)إليك حل سريع وقذر:
إعطاء ملف تخفيض السعر
sample.md
بالمحتويات التالية:يمكنك إنشاء ملف (دعنا نسميه
src/utils/template.js
) وكتابة شيء مثل هذاالآن قم بتوصيلها جميعًا معًا ، ستحتاج فقط إلى _ استخدام_ وظيفة القالب هذه لاستبدال المحتوى الخاص بك. يمكن أن يكون الكائن
data
كل ما تريد ويمكن سحبه من أي مكان (على سبيل المثال ، Graphql ، بعض ملفات الثوابت ، متغيرات البيئة ، إلخ).هل لهذا معنى؟ قد يكون هذا ملحقًا مفيدًا إلى حد ما لملاحظة gatsby ، لكنني لست متأكدًا من وجوده! إذا كان لديك أي اهتمام بكتابة ذلك ، فسيكون ذلك رائعًا ، ولكن في الوقت الحالي ، سيعمل هذا بالتأكيد مع حالة الاستخدام الخاصة بك!
سيتم إغلاق هذا كما تم الرد ، ولكن لا تتردد في إعادة فتحه إذا كان بإمكان أي منا تقديم المزيد من المساعدة. شكرا لاستخدامك Gatsby!