Redux-сага работает в бесконечной петле - PullRequest
0 голосов
/ 12 октября 2018

Redux saga запускается в бесконечном цикле, даже после повторного запуска PROJECTS_SUCCEDED он возвращается к методу fetchData.пожалуйста найдите код саги ниже

import axios from 'axios';
import { put, all, take, call, takeLatest , takeEvery} from 'redux-saga/effects';
import actions from './actions';

const getRequest =  () =>{
    const data =  fetch('https://jsonplaceholder.typicode.com/todos/1')
                    .then( res => res.json())
                    .catch(err => {throw err});
    return data;
}

 function* fetchData(action) {
    console.log('fetchdata');
    try{
        const data = yield call(getRequest);
        console.log(data)
        yield put({type:actions.PROJECTS_SUCCEDED, payload:data});
    }
    catch (err){
        yield put({type:actions.PROJECTS_FAILED,err:err});
    }
}

function* dashboardSaga(){
    console.log('saga ran once')
    yield  takeLatest(actions.projectsRequested, fetchData);        
}

export default dashboardSaga;

, и действие вызывается в componentDidMount

componentDidMount() {
        this.props.projectsRequested();
    }

, а корневая сага -

import { all } from 'redux-saga/effects';
import homeSaga from './dashboard/sagas';

export default function* rootSaga(getState) {
    yield all([
        homeSaga(),
    ]);
}

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Здесь вам нужно использовать тип действия для запроса

function* dashboardSaga(){ console.log('saga ran once') yield takeLatest(actions.PROJECTS_REQUESTING, fetchData); }

0 голосов
/ 12 октября 2018

удалось решить вышеуказанную проблему, изменив метод жизненного цикла на componentWillMount вместо componentDidMount

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...