Как вы используете useMutation из response-apollo-hook для выполнения удаления мутации? - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь использовать хук useMutation из react-apollo-hook s для выполнения удаления мутации, но у меня возникают трудности при передаче значения идентификатора сообщения в хук мутации в следующем коде:

const Posts = () => {
    const { data, error, loading } = useQuery(GET_POST)
    const onDeleteHandler = useMutation(DELETE_POST, {
        variables: { id }
    })
    if (loading) return <div>...loading</div>
    if (error) return <div>Error</div>

    return data.posts.map(({id, title, body, location, published, author}) => {
        return  (
            <div className="card" key={id}>
                <p>id: {id}</p>
                <p>title: {title}</p>
                <p>body: {body}</p>
                <p>location: {location}</p>
                <p>published: {published}</p>
                <p>author: {author.name}</p>
                <Link to={`/post/${id}/edit`}>
                    Edit
                </Link>
                <button 
                    onClick={onDeleteHandler}>
                    Delete
                </button>
            </div>
        )
    })    
}

Я не могу включить useMutation в свойство onClick(), так как ловушка не может использоваться в качестве функции обратного вызова.Я попытался использовать const inputRef = useRef() и передать inputRef.current.value, но получал неопределенный.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Из react-apollo-hooks документов :

Вы можете предоставить любые параметры мутации в качестве аргумента хуку useMutation или возвращаемой им функции

Таким образом, вы можете опустить переменные при вызове useMutation:

const onDeleteHandler = useMutation(DELETE_POST)

и затем передать их при вызове обработчика:

onClick={() => onDeleteHandler({ variables: { id } })}>
0 голосов
/ 26 июля 2019

Полагаю, вы могли бы сделать то же самое с useQuery().Даниэль Реарден

...