我不确定在variables
选项中传递refetchQueries
的最佳做法是什么。在下面的示例中,变量为{id: this.props.item.id}
但是,this.props.item.id
传递了错误,因为MyComponent
尚未实例化,因此this.props
未定义。
function mapStateToProps(state) {
return {
item: state.item
};
}
MyComponent = connect(mapStateToProps, matchDispatchToProps)(
MyComponent
);
MyComponent = graphql(createItemImage, {
name: "createItemImage",
options: {
refetchQueries: [
{
query: getEntity,
variables: { id: this.props.item.id }
}
]
}
})(MyComponent);
id
值仅在运行时可用。
提前致谢!
答案 0 :(得分:6)
这是最终有效的内容,请参考ownProps
,订单(connect
语句应 <{strong> graphql
声明后
MyComponent = graphql(createItemImage, {
name: "createItemImage",
options: ownProps => ({
refetchQueries: [
{
query: getEntity,
variables: { id: ownProps.item.id }
}
]
})
})(MyComponent);
MyComponent = connect(mapStateToProps, matchDispatchToProps)(
MyComponent
);
答案 1 :(得分:1)
您需要将item.id变量显式传递给组件。因此,在函数中添加变量命名id
MyComponent = graphql(createItemImage, {
name: "createItemImage",
options: {
refetchQueries: [
{
query: getEntity,
variables: { id: id }
}
]
}
})(MyComponent, id);
export default MyComponent
然后在调用组件时使用以下语法
<MyComponent id={this.props.item.id}>
希望这有帮助