yield put 会触发takeEvery中的方法,这样会造成死循环

来源:6-9 Redux-saga中间件入门(2)

慕盖茨0058887

2023-05-27

import {takeEvery, put} from 'redux-saga/effects';
import {INIT_LIST_DATA} from './actionTypes'
import "./actionTypes";
import axios from "axios";

function *getList() {
    console.log('getInitList')
    const res = yield axios.get('http://47.104.103.63/project/react/todolist/todolist.json');
    const data = res.data
    yield put({
        type: INIT_LIST_DATA,
        value: data
    })
}

// generator 函数
function *mySaga() {
    console.log('mySaga')
    yield takeEvery(INIT_LIST_DATA, getList)
}

export default mySaga;

上面代码 console.log('getInitList') 会被无限打印,问题出在哪
写回答

1回答

Dell

2023-06-08

你看哈,当来了一个 INIT_LIST_DATA,你就掉用 getList,get List 里面你又继续发送一个 INIT_LIST_DATA,当来了一个 INIT_LIST_DATA,你就掉用 getList,get List 里面你又继续发送一个 INIT_LIST_DATA,当来了一个 INIT_LIST_DATA,你就掉用 getList,get List 里面你又继续发送一个 INIT_LIST_DATA,。。。。。 死循环就是你这段逻辑造成的。

0
1
慕盖茨0058887
学完了,都解决了,type一样肯定死循环
2023-06-08
共1条回复

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程