Как использовать staticman с React (Гэтсби)?

Как сказано здесь https://github.com/eduardoboucas/staticman/issues/243 , staticman через их централизованный API не работает из-за достижения определенных квот

Таким образом, staticman становится приложение гитхаб для расширения этих квот, но до сих пор нет официальной документации для его запуска.

Как это делается?

Разработчик приложения не рекомендует использовать общедоступный API: github.com/eduardoboucas/staticman/issues/….

GNUSupporter 8964民主女神 地下教會 01.02.2021 14:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
447
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На основе https://github.com/robinmetral/eaudepoisson

  1. Создайте репозиторий на гитхабе
  2. Установите приложение staticman в этот репозиторий, который можно найти здесь https://github.com/apps/staticman-net.
  3. Создайте файл конфигурации staticman.yml в корне репозитория, смотрите в документации по конфигурации https://staticman.net/docs/configuration и в репо https://github.com/robinmetral/eaudepoisson

Важно, имя свойства staticman.ymlcomments:, это свойство — то, что идет в направлении вашего репо. Итак, если вы хотите отправлять комментарии в your_repo/markdown/website_comments, то ваш path в staticman.yml должен быть path: "markdown/website_comments"), но см. ниже, что ваш URL-адрес относится не к структуре папок, а к свойству staticman.yml

  1. Создайте папку /markdown/website_comments в своем репозитории (не обязательно, структура папок будет создана с первым комментарием)
  2. Создайте form, я сделал это с помощью форм, предоставленных react.semantic-ui.com
<Form onSubmit = {onSubmit}>
    <Form.Input name = "name" onChange = {changeUserName} placeholder = "what" />
    <Form.TextArea name = "message" onChange = {changeuserMessage} placeholder = "what2" />
    <Form.Button>Submit</Form.Button>
</Form>
  1. Добавьте логику для отправки предыдущей формы, где form отправляет data в https://dev.staticman.net/v3/entry/github/{мой пользователь github}/{мой репозиторий}/master/comments/ (измените пользователя github и имя репозитория)
  const [userName, setUserName] = useState(() => '')
  const [userMessage, setUserMessage] = useState(() => '')
  const wait = ms => new Promise((r, j) => setTimeout(r, ms))

  let changing = 0 // to create a buffer to avoid changing state always, the browser gets slow otherwise
  const changeUserName = async (e, { value }) => {
    changing++
    let prev_changing = changing
    await wait(100)
    if (prev_changing === changing) setUserName(value)
  }

  const changeuserMessage = async (e, { value }) => {
    changing++
    let prev_changing = changing
    await wait(100)
    if (prev_changing === changing) setUserMessage(value)
  }

  const onSubmit = async e => {
    e.preventDefault()
    const formdata = new FormData()
    formdata.set('fields[name]', userName)
    formdata.set('fields[message]', userMessage)
    const json = {}
    formdata.forEach((value, prop) => (json[prop] = value))
    const formBody = Object.keys(json)
      .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(json[key]))
      .join('&')

    // in the repo, create a folder named 'comments'
    const response = await fetch(
      'https://dev.staticman.net/v3/entry/github/{my github user}/{my repo}/master/comments/',
      {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: formBody,
      }
    )
    console.info(response)
  }

И это все, или, по крайней мере, в моих руках это работает

Служба поддержки приложения предлагает пользователям держаться подальше от каких-либо общедоступных экземпляров и настроить свой собственный экземпляр в github.com/eduardoboucas/staticman/issues/….

GNUSupporter 8964民主女神 地下教會 01.02.2021 14:47

Другие вопросы по теме