【发布时间】:2019-05-23 00:48:12
【问题描述】:
在我的组件中,我使用 react-adopt 来编写 graphql 查询和突变,这样我的渲染道具就不会变得太乱。我有以下代码:
这是我的突变,它需要一个参数 - planID。
const CREATE_ORDER_MUTATION = gql`
mutation CREATE_ORDER_MUTATION($planID: String!) {
createOrder(planID: $planID) {
planID
name
description
subscriptionType
images
subscriptionType
pricePerMonth
}
}
这是采用函数,它需要几个突变,其中之一是 createOrder。 Apollo 的工作方式是我需要在这里将变量 prop 传递给 createOrder 组件。问题是,我此时没有planID。 planID 仅在实际组件内部可用。
const Composed = adopt({
toggleCart: <Mutation mutation={TOGGLE_CART_MUTATION} />,
createOrder: <Mutation mutation={CREATE_ORDER_MUTATION} />,
});
我的组件看起来像这样。我在这里有可用的planID,但我怎样才能将它作为参数传递给突变?!
render() {
const { plan } = this.props;
return (
<Composed>
{({ toggleCart, createOrder }) => {
const handleAdd = () => {
toggleCart();
Router.push('/waschingmachine');
createOrder();
};
return (
<StyledPlan>
<h1>{plan.name}</h1>
<p>{plan.description}</p>
<img src={`static${plan.images[0]}`} alt="blue1" />
<h2>{plan.pricePerMonth / 100} EUR</h2>
<div className="buttons">
<Link
href={{
pathname: '/plan',
query: { id: plan.id },
}}
>
<button type="button">info</button>
</Link>
<button onClick={handleAdd} type="button">
Select Plan
</button>
</div>
</StyledPlan>
);
}}
</Composed>
);
}
如果没有办法以这种方式解决它,您将如何以不同的方式解决它?
【问题讨论】:
标签: reactjs graphql react-apollo