Как изменить данные в Strapi с сайта, созданного с помощью Gatsby?

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

Есть ли подход к этому? Из того, что я прочитал, Гэтсби сам по себе не будет изменять данные Strapi.

1 ответ

Решение

Вы должны предоставить ApolloClient на ваш сайт. Наилучший путь будет в вашем корне в gatsby-ssr.js и gatsby-browser.js, после чего вы сможете использовать react-apollo как в следующих примерах

client.js

import ApolloClient from "apollo-boost"

const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZDRhN2FlNjRlYzE1MzIxMTY0N2EzNWMiLCJpc0FkbWluIjp0cnVlLCJpYXQiOjE1NjU1OTI2ODcsImV4cCI6MTU2ODE4NDY4N30.FZIWJ7sWhmQo6MPgUbY2Js-uVMWY1kUdASvr2oyY6Sd"
const url = "http://localhost:1337"

export default new ApolloClient({
  uri: `${url}/graphql`,
  request: operation => {
    operation.setContext({
      headers: {
        Authorization: `Bearer ${token}`,
      },
    })
  },
})

gatsby-ssr.js и gatsby-browser.js


import React from 'react';
import { ApolloProvider } from 'react-apollo';
import { client } from './src/client';

export const wrapRootElement = ({ element }) => (
  <ApolloProvider client={client}>
    {element}
  </ApolloProvider>
);

postTemplate.js

import React from "react"
import { Mutation } from "react-apollo"
import gql from "graphql-tag"

const POST_MUTATION = gql`
  mutation PostMutation($description: String!, $url: String!) {
    post(description: $description, url: $url) {
      id
      createdAt
      url
      description
    }
  }
`
const PostTemplate = () => {
  const description = "exampled escription"
  const url = "url"

  return (
    <Mutation mutation={POST_MUTATION} variables={{ description, url }}>
      {() => <button onClick={"... you'll implement this "}>Submit</button>}
    </Mutation>
  )
}

export default PostTemplate

другие ссылки

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