Динамическое построение списка мутаций gql на основе измененных записей в списке - PullRequest
0 голосов
/ 04 августа 2020

В моем приложении у меня есть список «советов», которые могут получить либо положительный, либо отрицательный голос в зависимости от их содержания. Мутация gql, которая обновляет эти советы, будет запущена, когда модальное окно, отображающее список, будет закрыто (например, пользователь может отменить свой голос за или передумать).

Мутация, которая обновляет мой сервер выглядит так:

export const VOTE = gql`
  mutation vote($tipId: ID!, $vote: VoteAlternative!) {
    castVote(tipId: $tipId, vote: $vote) {
      id
      body
      vote
      upVotes
      downVotes
    }
  }
`

Я хочу добиться функции, которая проверяет, какие подсказки были изменены, и добавляет их в список мутаций, которые будут выполнены. Примерно так:

const voteCreator = tip => `
  castVote(tipId: "${tip.id}", vote: "${tip.vote}") {
    id
    body
    vote
    upVotes
    downVotes
}`

const mutationRef = useRef(null)
const [voteMutations] = useMutation(mutationRef.current)

const submitVote = useCallback(() => {
if(tips && voteListState){
      mutationRef.current = gql`
        mutation {
          //maps over a list that contains the changed tips
          ${voteListState.map(tipState => voteCreator(tips.find(tip => tip.id === tipState.id)))}
        }
      `
      voteMutations()
    }
  }, [tips, voteListState, voteMutations])

Я подумал, что обновление ссылки будет уместным, но я не уверен в этом. Я также не очень разбираюсь в GQL, поэтому мне хотелось бы услышать ваши ответы на следующий вопрос: Как это делается с помощью GQL'i sh?

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