所以我在我的本机应用程序中使用redux进行状态管理。 我期待在我的应用程序中使用钩子。 我的商店有一个减速器的多个实例,因此将操作分派到单个减速器很难。
在这种情况下,挂钩似乎提供了一个真正整洁的解决方案。 我们正在使用中间件来捕获特定的动作并产生副作用。 我希望为钩子实现类似中间件的功能,其中分派给钩子的动作也可以在redux-中间件中捕获。
任何有关如何实现这种功能的建议将受到高度赞赏。
谢谢。
答案 0 :(得分:0)
您曾经听说过或者尝试将redux-saga用于中间件的异步事情,例如数据获取,以及不纯净的事情,例如访问浏览器缓存,它更易于管理,执行效率更高,易于测试,并且能够更好地处理故障。
有关更完整的文档,请参见here
我给你一个简单的例子,说明使用redux saga作为副作用
import api from '../api/apidetailproduct'; //if using api import it
import {
takeLatest, //Spawns a saga on each action dispatched to the Store that matches pattern
select, //instructs the middleware to invoke the provided selector on the current Store's state
call, //for calling api
put //instructs the middleware to dispatch an action to the Store.
} from 'redux-saga/effects';
import {
REQUEST_PRODUCT,
} from '../actions/constants';
import {
responseProduct,
} from '../actions/product';
export function* detailEffect(){
const {loginreducer} = yield select() //first select your reducer where you store
try {
const {data} = yield call(api, loginreducer.token )//calling the api and then send the variable
yield put(responseProduct(data))//put the data
} catch (error) {
console.log("error", error);
}
}
export const productsagas = [takeLatest(REQUEST_PRODUCT, detailEffect)]