首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在阿波罗-react查询后分派redux操作

在阿波罗-react查询后分派redux操作
EN

Stack Overflow用户
提问于 2017-09-07 10:35:08
回答 1查看 595关注 0票数 4

我想在查询完成后立即发送一个redux操作。-哪里是做这件事的合适地点?

在这里,我保留了对refetch函数的引用,这样我就可以在稍后的时间用最新的数据轻松地更新视图。

代码语言:javascript
复制
export default graphql(
    allFilesQuery,
    {
        props: ({ ownProps, data }) => {
            const { dispatch } = ownProps;
            dispatch(
                setRefetchAllFiles(data.refetch)
            );
            return {
                data,
                ...ownProps,
            };
        }
    }
)(FileListComponent);

在这起作用的同时,我也收到一个警告,说:

代码语言:javascript
复制
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`.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-08 22:01:46

道具功能应该是纯的,并返回道具注入组件,而不执行任何形式的副作用。实际上,您可以在其中进行分派,方法是将分派包装在setTimeout中,但这将是一个非常糟糕的主意,因为props函数每次组件重新呈现时都会运行,并且可能会触发许多不必要的分发。如果您的分派使组件重新呈现,它甚至可能导致无限循环。

做您想做的事情的正确位置是在组件中。您可以使用componentWillReceiveProps (或其他生命周期),并在适当时将以前的道具与下一个道具进行比较,触发分派。为此,您可以使用data.networkStatusdata.loading

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46094183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档