我有一个React-Apollo Mutation
,当用户通过播放视频以某种方式前进时会调用它。 React Player每2000毫秒调用一次回调,当进度为88%时,将调用我的突变。之后,called
为真,什么也没有发生。
当用户重播视频时,我需要重置突变状态。 React Player具有onStart
和onEnd
的回调,我可以在其中进行实际的重置,但是我的问题是我似乎不知道该怎么做。
<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
刷新突变,但没有骰子。
答案 0 :(得分:0)
我通过使组件变为有状态(即扩展React.Component
来解决此问题。我使用状态属性来跟踪是否已触发突变。简单而有效。
我想知道我的原始问题是否有答案。