【问题标题】:Apollo mutation reset called state阿波罗突变重置称为状态
【发布时间】:2019-04-16 01:09:35
【问题描述】:

我有一个 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 来刷新我的突变,但没有骰子。

【问题讨论】:

    标签: reactjs react-apollo


    【解决方案1】:

    我通过使用 state 属性来跟踪突变是否被触发来解决这个问题。简单有效。

    不过,我很想知道我最初的问题是否有答案。

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

    【讨论】:

    • 如果你能展示你如何解决它的代码示例会更好。
    • @DularaMalindu 好点,我会在电脑前编辑它
    猜你喜欢
    • 2019-04-02
    • 2017-03-23
    • 2019-02-20
    • 2021-01-24
    • 2018-12-06
    • 2018-10-03
    • 2017-09-04
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多