首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用params调用操作

使用params调用操作
EN

Stack Overflow用户
提问于 2018-07-18 16:18:55
回答 1查看 407关注 0票数 1

我使用React + Redux + Rxjs + typesafe-actions + TS,我想用params调用action。我现在的代码是:

操作:

代码语言:javascript
复制
import { createAsyncAction } from 'typesafe-actions';
import {ICats} from '/api/cats';

export const FETCH_CATS_REQUEST = 'cats/FETCH_CATS_REQUEST';
export const FETCH_CATS_SUCCESS = 'cats/FETCH_CATS_SUCCESS';
export const FETCH_CATS_ERROR = 'cats/FETCH_CATS_ERROR';

export const fetchCats = createAsyncAction(
    FETCH_CATS_REQUEST,
    FETCH_CATS_SUCCESS,
    FETCH_CATS_ERROR
) <void, ICats, Error> ();

呼叫派单:

代码语言:javascript
复制
store.dispatch(fetchCats.request());

我的史诗:

代码语言:javascript
复制
const fetchCatsFlow: Epic<Types.RootAction, Types.RootAction, Types.RootState> = (action$) =>
    action$.pipe(
        filter(isActionOf(fetchCats.request)),
        switchMap(() =>
            fromPromise(Cats.getDataFromAPI()).pipe(
                map(fetchCats.success),
                catchError(pipe(fetchCats.failure, of))
            )
        )
    );

接口:

代码语言:javascript
复制
export const Cats = {
    getDataFromAPI: () => $http.get('/cats').then(res => {
        return res.data as any;
    }),
};

它正在工作-调用API,但没有参数。我尝试了很多次,但我仍然不知道如何在调用调度时传递参数。

EN

回答 1

Stack Overflow用户

发布于 2018-07-18 17:18:46

我找到了答案:

代码语言:javascript
复制
export const fetchCats = createAsyncAction(
    FETCH_CATS_REQUEST,
    FETCH_CATS_SUCCESS,
    FETCH_CATS_ERROR
) <void, ICats, Error> ();

更改为:

代码语言:javascript
复制
type ICatsRequest = {
    catType: string;
};

export const fetchCats = createAsyncAction(
    FETCH_CATS_REQUEST,
    FETCH_CATS_SUCCESS,
    FETCH_CATS_ERROR
) <ICatsRequest, ICats, Error> ();

然后它允许我将指定的类型传递给dispatch:

store.dispatch(fetchCats.request({catType: 'XXX'}));

我还需要修改以下代码:

代码语言:javascript
复制
export const Cats = {
    getDataFromAPI: (params) => $http.get('/cats', {
        params: {
            type: params.payload.catType
        }
    }).then(res => {
        return res.data as any;
    }),
};

代码语言:javascript
复制
switchMap((params) =>
        fromPromise(Cats.getDataFromAPI(params)).pipe(
            map(fetchCats.success),
            catchError(pipe(fetchCats.failure, of))
    )
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51396946

复制
相关文章

相似问题

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