首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加useDispatch后,后台代码将无法运行

添加useDispatch后,后台代码将无法运行
EN

Stack Overflow用户
提问于 2021-02-17 15:54:46
回答 1查看 86关注 0票数 0

我正在使用apisauce为我的应用程序创建应用程序接口。apisauce有一个名为addMonitor的函数,这里是:https://github.com/infinitered/apisauce#adding-monitors

但是当我将useDispatch添加到naviMonitor中时,后台的代码无法运行。具体地说,我不能记录response。贝罗是我的Api.js

代码语言:javascript
复制
import apisauce from 'apisauce';
import {useDispatch} from 'react-redux';

const create = () => {
    ...

    const naviMonitor = (response) => {
        const dispatch = useDispatch();
        const {status} = response || {};

        if ( (status && status === 200) ) {
            console.log(response);
        } else {
            // TODO
        }
    };

    api.addMonitor(naviMonitor);
}

我哪里错了?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-02-17 16:06:05

尝试将响应对象从API返回到组件函数,并在那里使用调度方法,因为我们不允许在组件外部使用useDispatch钩子或任何react钩子。

像这样:

代码语言:javascript
复制
import apisauce from 'apisauce';
import {useDispatch} from 'react-redux';

const create = () => {
    ...

    const naviMonitor = (response) => {
        
        const {status} = response || {};

        if ( (status && status === 200) ) {
            console.log(response);
            return response; // process response if required.
        } else {
            // TODO
            return response; // process response if required.            
        }
    };

    api.addMonitor(naviMonitor);
}

在component屏幕中:

代码语言:javascript
复制
import {useDispatch} from 'react-redux';

const MyComponent = props => {
    const dispatch = useDispatch();

    const actionHandler = async () => {
        const response = await create();
        dispatch(response);  // dispatch your actions here..
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66237768

复制
相关文章

相似问题

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