0

我正在将 Netlify CMS 用于 React 项目。我可以渲染整个文件,但我只想渲染 markdown 文件的某些特定部分,如标题、图像、日期等。

我对要提取的部分进行了降价文件搜索,并使用 substr 和另一种方法仅提取我需要的部分。

该解决方案不是动态的。就像,如果我想用描述代替标题,我将不得不再次重写相同的代码,在我的情况下,这将导致太多的代码行。

这是我用来获取标题的代码。

let stringTitleSearchPattern = /title: /i;
let indexOfTitle = mdData.search(stringTitleSearchPattern);
let getTitleToEndFile = mdData.substr(indexOfTitle);
let lineBreak = /\n/;
let lineBreakIndex = getTitleToEndFile.search(lineBreak);
let startIndex = 7;
let endIndex = lineBreakIndex;
let title = getTitleToEndFile.substring(startIndex, endIndex);

所有,这些值可以根据我想从降价中检索的内容而改变。我想知道是否可以这样做。

因为我对 React 不是很有经验,对 Netlify CMS 和 Markdown 文件也完全没有经验。请帮助找到解决方案。

4

1 回答 1

3

如果你想让它动态化,你可以传递一个字符串作为你想要的道具,例如标题、描述等。

假设:所有其他代码保持不变,除了let stringTitleSearchPattern = /title: /i;

你可以定义一个函数,传递它stringTitleSearchPattern

const searchMarkdown = (searchSTring) => {
  let stringTitleSearchPattern = searchString;
  let indexOfTitle = mdData.search(stringTitleSearchPattern);
  let getTitleToEndFile = mdData.substr(indexOfTitle);
  let lineBreak = /\n/;
  let lineBreakIndex = getTitleToEndFile.search(lineBreak);
  let startIndex = 7;
  let endIndex = lineBreakIndex;
  let title = getTitleToEndFile.substring(startIndex, endIndex);
}

// call it
searchMarkdown(searchString: /title: /i)
searchMarkdown(searchString: /description: /i)

您可以通过这种方式轻松制作更多属性以动态搜索。

于 2019-04-03T07:47:25.910 回答