加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在apollo-react查询后调度redux动作

发布时间:2020-12-15 16:15:06 所属栏目:百科 来源:网络整理
导读:我想在查询完成后立即发送redux操作. – 哪里是正确的地方? 这里我保留了对重新获取功能的引用,以便我可以在以后使用最新数据轻松更新视图. export default graphql( allFilesQuery,{ props: ({ ownProps,data }) = { const { dispatch } = ownProps; dispa
我想在查询完成后立即发送redux操作. – 哪里是正确的地方?

这里我保留了对重新获取功能的引用,以便我可以在以后使用最新数据轻松更新视图.

export default graphql(
    allFilesQuery,{
        props: ({ ownProps,data }) => {
            const { dispatch } = ownProps;
            dispatch(
                setRefetchAllFiles(data.refetch)
            );
            return {
                data,...ownProps,};
        }
    }
)(FileListComponent);

虽然这有效,但我也收到警告,说:

Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern,but can be moved to `componentWillMount`.

解决方法

道具功能应该是纯粹的并且返回道具以注入组件而不执行任何类型的副作用.实际上,您可以通过将调度包装在setTimeout中来调度它,但这将是一个非常糟糕的主意,因为每次组件重新渲染时都会运行props函数,并且可能会触发许多不需要的调度.如果您的调度使组件重新渲染,它甚至可能导致无限循环.

做你想做的事的正确的地方是你的组件.您可以使用componentWillReceiveProps(或其他生命周期),并将之前的道具与下一个道具进行比较,在适当时触发调度.您可以使用data.networkStatus或data.loading.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读