Kev*_*vvv 3 reactjs graphql react-apollo react-hooks react-apollo-hooks
我正在尝试使用s 中的useMutation钩子react-apollo-hook来执行删除突变,但是在以下代码中我很难将帖子的 ID 值传递给突变钩子:
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>
)
})
}
Run Code Online (Sandbox Code Playgroud)
由于钩子不能用作回调函数,因此我不能useMutation在onClick()属性内部包含。我尝试使用const inputRef = useRef()和传递inputRef.current.value,但一直未定义。
从react-apollo-hooks 文档:
你可以提供任何变异选项作为 useMutation 钩子或它返回的函数的参数
所以你可以在调用时省略变量useMutation:
const onDeleteHandler = useMutation(DELETE_POST)
Run Code Online (Sandbox Code Playgroud)
然后在调用处理程序时传入它们:
onClick={() => onDeleteHandler({ variables: { id } })}>
Run Code Online (Sandbox Code Playgroud)
注意:react-apollo-hooks现在已弃用,因为react-apollo现在支持钩子。API 有点不同,因此用法如下所示:
const [onDeleteHandler, { data, loading, error }] = useMutation(DELETE_POST)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |