Функция преобразования, передаваемая в отрисованных дочерних элементах, может вызываться с параметрами.Опции могут включать переменные, используемые в строке мутации GraphQL. [1] .
Это означает, что вы можете вызвать мутационную функцию createOrder
следующим образом.
createOrder({ variables: { planID: 'some plan id' } });
Учитывая динамический характерУ planID есть несколько способов реализовать это.Одним из них является использование атрибутов данных, как показано ниже:
Атрибут data
может быть установлен для идентификатора плана на кнопке.
<button onClick={handleAdd} data-planid={plan.id} type="button">
Select Plan
</button>
handleAdd
может быть изменен наполучить planid
из целевого атрибута набора данных и вызвать createOrder
с переменной planID
.
const handleAdd = event => {
const planID = event.target.dataset.planid;
toggleCart();
Router.push('/waschingmachine');
createOrder({ variables: { planID } });
};
Другой способ - напрямую передать planID
в handleAdd
при вызове его в onClick
опора для кнопки.
<button onClick={() => handleAdd(plan.id)} type="button">
Select Plan
</button>
Затем обновите обработчик
const handleAdd = planID => {
toggleCart();
Router.push('/waschingmachine');
createOrder({ variables: { planID } });
};
Есть компромиссы для обоих подходов.Для более раннего подхода planid задается в DOM как атрибуты и может быть прочитан позже.В то время как для последующего, N обработчиков созданы для N планов и хранятся в памяти.