突变后的阿波罗更新不会触发重投

问题描述:

我遇到了graphQL apollo中的突变问题。当页面加载时,它将运行查询lectureResponseQuery,并且如果运行查询== null变量fetchLectureResponseMutation以创建新文档。这个变异返回新的结果,我做了一个更新的查询,我期望组件将重新渲染与新的数据,但它不会。有谁知道这是为什么?谢谢!突变后的阿波罗更新不会触发重投

@graphql(fetchLectureResponseMutation, { 
    options: ownProps => ({ 
    variables: { lectureName: ownProps.match.params.lectureName }, 
    update: (proxy, { data: { fetchLectureResponse } }) => { 
     const data = proxy.readQuery({ 
     query: lectureResponseQuery, 
     variables: { lectureName: ownProps.match.params.lectureName }, 
     }); 
     data.lectureResponse = fetchLectureResponse; 
     proxy.writeQuery({ 
     query: lectureResponseQuery, 
     data, 
     }); 
    }, 
    }), 
    name: 'fetchLectureResponse', 
}) 
@graphql(lectureResponseQuery, { 
    options: ownProps => ({ 
    variables: { lectureName: ownProps.match.params.lectureName }, 
    }), 
}) 
class LecturePage extends React.PureComponent { 
    componentWillUpdate(nextProps) { 
    if (nextProps.data.lectureResponse === null) { 
     this.props.fetchLectureResponse(); 
    } 
    } 


    render() { 
    const { data } = this.props; 
    if (data.loading || data.lectureResponse === null) { 
     return <Loading />; 
    } 

    return <LectureLayout lectureResponse={data.lectureResponse} /> 
    } 
} 

对于任何正在研究这个问题在面向未来的中心问题是,我想做一个查找或创建操作。如果查询只是返回新对象(如果该对象不存在),则这会更好,因为那样只会产生1个后端调用,这意味着您不必同步查询和变体之间的时间。

TLDR:使用查询进行findOrCreate操作!