Как динамически читать только определенные части файлов разметки, созданных с помощью Netlify CMS в React? - PullRequest
0 голосов
/ 03 апреля 2019

Я использую Netlify CMS для проекта React. Я могу отобразить весь файл, но хочу отобразить только некоторые определенные части файлов уценки, такие как заголовок, изображения, дата и т. Д.

Я выполнил поиск файла уценки для части, которую я хочу извлечь, и использовал 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. Пожалуйста, помогите найти решение.

1 Ответ

3 голосов
/ 03 апреля 2019

Если вы хотите сделать его динамичным, вы можете передать строку с указанием того, что вы хотите, например, заголовок, описание и т. Д.

Предположение: все остальные коды остаются такими же, кроме 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)

Вы можете легко создать дополнительные свойства для динамического поиска таким образом.

...