如何在reduxjs/toolkit和react-redux中使用redux-saga,(后端使用node)

文件夹格式 store文件夹中包括index.js,reducer.js,saga.js

index.js

    

import { configureStore, } from "@reduxjs/toolkit";
import reducer from "./reducer";
import { watchGetUser } from './saga';
import createSagaMiddleware from 'redux-saga';
const sagaMiddleware = createSagaMiddleware();
const store = configureStore({
   reducer,
   middleware: (getDefaultMiddleware) =>
      getDefaultMiddleware().concat(sagaMiddleware),
})

sagaMiddleware.run(watchGetUser);
export default store

reducer.js

   

import { createSlice } from "@reduxjs/toolkit";

const Slice = createSlice({
    name: 'aaa',
    initialState: {
        arr: [],
        sum: null
    },
    reducers: {
        
        getUser: (state, action) => { 
            console.log(action,888);
        },
        getUserSuccess: (state, action) => {
            console.log(action,'成功');
            return action.payload;
        },
        getUserFailure: (state, action) => {
            console.log(action,'失败');
            return action.payload;
        },
    }
})
export const {getUser,getUserSuccess,getUserFailure} = Slice.actions
export default Slice.reducer

saga.js

  

import { takeLatest, call, put } from 'redux-saga/effects';
import { getUserSuccess, getUserFailure } from './reducer';
import axios from 'axios';

function* getUser(action) {
    try {
        const res = yield call(axios.get, 'http://localhost:3001/'); // 替换为您的API调用
        const user = res.data
        yield put(getUserSuccess(user));
    } catch (error) {
        yield put(getUserFailure(error));
    }
}

export function* watchGetUser() {
    yield takeLatest('aaa/getUser', getUser);
}

在组件内部使用的话

import { useSelector, useDispatch } from 'react-redux'
import {  getUser } from '../../store/reducer';

const store = useSelector(store => store)
const dispatch = useDispatch()

const ceshi=()=>{
   dispatch(getUser())
 }

React 安装 ReduxRedux Toolkit 的步骤如下: 1. **安装Redux**: 首先需要安装Redux库。你可以使用npm或yarn来添加依赖。通过终端或命令行运行以下命令: ```bash npm install redux # 或者如果使用Yarn yarn add redux ``` 2. **安装Redux Toolkit (RTK)**: Redux Toolkit是一个官方推荐的库,它简化了Redux的工作流,包括创建store、action creators、reducers等。安装时同样使用npm或yarn: ```bash npm install @reduxjs/toolkit # 或者Yarn yarn add @reduxjs/toolkit ``` 安装完成后,你可以在React项目创建Redux store,并配置基本的reducer和actions。例如,在`src/reducers/index.js`: ```javascript import { createSlice } from '@reduxjs/toolkit'; // 创建一个简单的slice const counterSlice = createSlice({ name: 'counter', initialState: { count: 0 }, reducers: { increment: (state) => ({ count: state.count + 1 }), decrement: (state) => ({ count: state.count - 1 }), }, }); export default counterSlice.reducer; ``` 然后在`src/store.js`里创建并结合应用这个store: ```javascript import { configureStore } from '@reduxjs/toolkit'; import counterReducer from './reducers'; const store = configureStore({ reducer: { counter: counterReducer, }, }); export default store; ``` 最后,在你需要的地方可以使用`useSelector`和` useDispatch` hooks从store获取数据和触发actions: ```jsx import React from 'react'; import { useSelector, useDispatch } from '@reduxjs/toolkit'; function Counter() { const count = useSelector((state) => state.counter.count); const dispatch = useDispatch(); return ( <div> <h1>Count: {count}</h1> <button onClick={() => dispatch(counterSlice.actions.increment())}>+</button> <button onClick={() => dispatch(counterSlice.actions.decrement())}>-</button> </div> ); } export default Counter; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值