请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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') 会被无限打印,问题出在哪

正在回答 回答被采纳积分+3

1回答

Dell 2023-06-08 23:57:29

你看哈,当来了一个 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 回复 有任何疑惑可以回复我~
  • 提问者 慕盖茨0058887 #1
    学完了,都解决了,type一样肯定死循环
    回复 有任何疑惑可以回复我~ 2023-06-08 23:58:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信