Как вы используете useMutation из response-apollo-hook для выполнения удаления мутации?
Я пытаюсь использовать 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
, но продолжал становиться неопределенным.
1 ответ
Решение
От react-apollo-hooks
документы:
Вы можете предоставить любые параметры мутации в качестве аргумента хуку useMutation или возвращаемой им функции
Таким образом, вы можете опустить переменные при вызове useMutation
:
const onDeleteHandler = useMutation(DELETE_POST)
а затем передать их при вызове обработчика:
onClick={() => onDeleteHandler({ variables: { id } })}>