在使用 RefetchQueries 进行变异时,我在页面中遇到了一些问题。
我有一个带有复选框的项目列表
ItemList(父组件),ToolBar(子组件)
在子组件中,我有一个删除按钮,可以在从项目列表中选择项目后单击该按钮。我通过道具将选定的项目传递给子组件。
单击删除按钮时,它应该调用getTransactions查询。根据结果,如果有任何交易可用,我必须显示模式并单击“确定”我必须删除这些项目。
<a className="flat-b" id="delete-checked" title="Move to Trash" onClick={() => getTransactions({variables:{itemIds: selectedItemIds}})} style={iconStyle}>
<i className="fas fa-trash"></i>
</a>
const [getTransactions, { loading, data }] = useLazyQuery(GET_TXNS);
const [TrashMuation, {loading: trashLoading, data:trashData}] = useMutation(trashMutation, {
refetchQueries: [{query: GET_ITEMS, variables: queryVariables}]
});
if (data) {
if (transactionItems) {
return <div>
<div id="mpn-modal-ol-div" className="mpn-modal-wrap" onClick={checkBubble}>
<div className="sp-lightbox" style={{maxHeight}}>
<h4 style={{width: '94%', textAlign: 'center', borderBottom: '1px solid #f2f4f9', padding: '20px 3%', fontSize: '1.3em'}}>
Transactions exist
</h4>
<section style={{overflowY: 'auto', maxHeight: `${maxHeight - 197}px`, margin: '24px 3%', width: '94%'}}>
Are you sure you want to delete the following item(s)? You already have transactions made against them.
{transactionItemTitles}
</section>
<div style={{width: '94%', textAlign: 'center', borderTop: '1px solid #f2f4f9', margin: '0 3% 15px 3%', paddingTop: '15px'}}>
<button className="sp-button grey" onClick={() => onCancel()}>
<div>Cancel</div>
</button>
<button onClick={() => TrashMuation({variables: {ids: selectedItemIds}})} className="sp-button teal refund ml-10">
<div>OK</div>
</button>
</div>
</div>
</div>
</div>
} else {
TrashMuation({variables: {ids: selectedItemIds}});
}
}
在删除多个项目时,我必须检查所选项目是否有可用的交易。
现在删除工作正常,但突变 api 调用多次,查询 api 调用多次。我无法弄清楚。
如果我更改 if(data) 中的 if else 语句,则会给出错误cannot update during state transition。
请帮助实现目标。