gpt4 book ai didi

javascript - React Apollo 查询和突变组件不会获取新数据

转载 作者:行者123 更新时间:2023-11-30 20:33:17 25 4
gpt4 key购买 nike

每当发生突变时,我都会尝试刷新/更新我的查询。但由于某种原因,它不会发生。

我尝试了几种方法:

  1. 在我的 <Query> 上使用 pollInterval="500"
  2. 在我的 <Mutation> 上声明 updateCache 函数

只是想知道是否有人能帮我解决这个问题。我愿意接受任何建议

非常感谢!

const GET_FIELD_BY_FORM_ID = gql`
query field($formID: String!){
field(formID: $formID){
fieldID,
formID,
}
}
`;

const CREATE_FIELD = gql `
mutation fieldCreate($formID: String!, $order: Int, $value: String, $label: String, $section: String){
fieldCreate(formID:$formID, order: $order, value:$value, label:$label, section:$section){
value
order
fieldID
formID
}
}
`;

const updateCache = (cache, { data: {fieldCreate}}) => {
const {field} = cache.readQuery({ query: GET_FIELD_BY_FORM_ID, variables: {formID: "da096d11-b725-4b67-b8ca-e50c48dd0bda"} })
cache.writeQuery({
query: GET_FIELD_BY_FORM_ID,
data:{
field: field.concat(fieldCreate)
}
})

}


export default class NewEditor extends Component {
render() {

return (
<div>
<Query query={GET_FIELD_BY_FORM_ID} variables={{formID: this.props.match.params.formID}} pollInterval={500}>
{({ loading, error, data , startPolling, stopPolling }) => {
if (loading) return "Loading...";
if (error) return `Error! ${error.message}`;
return (
<div>
{data.field.map(field => (
<li key={field.fieldID}>{field.fieldID}| {field.label} | {field.order}</li>
))}
</div>
)
}}
</Query>
<Mutation mutation={CREATE_FIELD} update={updateCache}>
{(createField, { data}) => (
<div>
<form
onSubmit={async e => {
e.preventDefault();
await createField({ variables: { formID: this.props.match.params.formID, label:"newly generated", section: "header", order: 9} });
}}
>
<button type="submit">Add Todo</button>
</form>
</div>
)}
</Mutation>
</div>
)}};

最佳答案

您需要订阅才能收听任何突变所做的任何更改。它是一个 PubSub 实现,您可以在其中连接到任何实体或“主题”(Kafka 中的类比),并且您将收到包含已更改数据的突变事件。

查看https://www.apollographql.com/docs/graphql-subscriptions/了解详情。

关于javascript - React Apollo 查询和突变组件不会获取新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50111920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com