Redux-saga 如何在 saga 内部向请求传递参数

我有一些代码要更新。这不是我的代码,所以我不想要太多更改。它使用 redux-saga 和 axios。我想将一些论点传递给 saga


我在sagas.js中的传奇


export function* getInfoSaga() {

    while (true) {

        yield take(mutations.GET_INFO);

        const url1 = `${url}/api/getInfo/1-100`;

        const logInfo = yield axios.get<any>(url1).then(response => response);

        yield put(mutations.setInfo(logInfo.data.data));

    }

}

突变.js


export const GET_INFO = 'GET_INFO';


export const getInfo = () => ({

    type: GET_INFO,

});

sagas 在index.js中运行


const s = sagas as any;


for (const saga in s) {

    sagaMiddleware.run(s[saga]);

}

在某些文件中,该操作由带有事件的按钮运行:


 onClick={() => dispatch({

                        type: 'GET_INFO',

                    })}

我想传递一些参数来修改请求 url,我尝试在 dipatch 请求中获取附加对象,并将参数添加到 sagas.js 和 mutatuions.js 中的生成器,但是我得到一个错误,无法访问未定义的属性


噜噜哒
浏览 194回答 2
2回答

泛舟湖上清波郎朗

你有没有尝试过:onClick={() => dispatch({&nbsp; type: 'GET_INFO',&nbsp; url: 'your/url/goes/here'})}export function* getInfoSaga(action) {&nbsp; &nbsp; while (true) {&nbsp; &nbsp; &nbsp; &nbsp; yield take(mutations.GET_INFO);&nbsp; &nbsp; &nbsp; &nbsp; const url1 = `${action.url}/api/getInfo/1-100`;&nbsp; &nbsp; &nbsp; &nbsp; const logInfo = yield axios.get<any>(url1).then(response => response);&nbsp; &nbsp; &nbsp; &nbsp; yield put(mutations.setInfo(logInfo.data.data));&nbsp; &nbsp; }}

繁星coding

更新:传递有效载荷并仅从“take”分配返回值onClick={() => dispatch({&nbsp; type: 'GET_INFO',&nbsp; payload: {&nbsp; &nbsp; key1: value1&nbsp; &nbsp; // other values here&nbsp; }})}export function* getInfoSaga() {&nbsp; &nbsp;const action = yield take(mutations.GET_INFO);&nbsp; &nbsp;// action.payload.key1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript