如何在React Query的useQuery函数中传递参数给函数,当enabled设置为false时?
<p>我正在创建一个查询,允许我复制一个模板。复制模板的查询需要一个id,但最初没有任何id。当我在onClick函数中调用它时,我该如何将id作为参数传递给查询函数。</p>
<p>复制模板的函数:</p>
<pre class="brush:php;toolbar:false;">duplicate: ({ queryKey: [_key, id] }) => axios.get(`${base_url}templates/${id}/duplicate?auth_token=${auth_token}`),</pre>
<p>我的查询:</p>
<pre class="brush:php;toolbar:false;">const { data: duplicateTemplate, refetch: duplicateTemplateFunc } = useQuery(
[`template],
api.duplicate,
{
enabled: false,
onSuccess: () => {
message.success('模板复制成功。')
},
}
)</pre>
<p>onClick方法在antd表格的render方法中使用,通过<code>record.id</code>给我id。</p>
<pre class="brush:php;toolbar:false;">render: (_value, record) => (
<div onClick={() => duplicateTemplateFunc(record.id)>
复制
</div>
),</pre>
当使用react-query库中的useQuery hook并将enabled设置为false时,您仍然可以将参数传递给正在执行的函数。您只需要将参数作为对象传递给useQuery hook的第二个参数。 const { data, isLoading, error } = useQuery( ["fetchData", { id: 123, name: "John" }], (_key, params) => { return fetch(`https://your-api.com/data/${params.id}?name=${params.name}`) .then(res => res.json()); }, { enabled: false } );