阿波罗突变重置称为状态

时间:2018-11-13 08:43:25

标签: reactjs react-apollo

我有一个React-Apollo Mutation,当用户通过播放视频以某种方式前进时会调用它。 React Player每2000毫秒调用一次回调,当进度为88%时,将调用我的突变。之后,called为真,什么也没有发生。

当用户重播视频时,我需要重置突变状态。 React Player具有onStartonEnd的回调,我可以在其中进行实际的重置,但是我的问题是我似乎不知道该怎么做。

<Query query={GET_VIDEO} variables={queryVars}>
{({ error, loading, data, refetch }) => {
    return <Mutation
        mutation={VIDEO_WATCHED}
        variables={mutationVars}
        // refetchQueries={[{ query: GET_VIDEO, variables: queryVars }]}
        onCompleted={() => refetch()}
    >
        {(mutate, { called }) => {
            const onProgress = ({ played }) => {
                if (!called && played >= 0.88) {
                    mutate();
                }
            };
            return <VimeoPlayer
                url={video.url}
                onProgress={onProgress}
                progressInterval={2000}
            />;
        }}
    </Mutation>;
}}
</Query>;

我尝试对突变使用refetchQueries,并在查询中使用refetch刷新突变,但没有骰子。

1 个答案:

答案 0 :(得分:0)

我通过使组件变为有状态(即扩展React.Component来解决此问题。我使用状态属性来跟踪是否已触发突变。简单而有效。

我想知道我的原始问题是否有答案。