Действие наблюдателя Redux-Saga вызывается дважды - PullRequest
0 голосов
/ 18 января 2019

У меня саги настроены следующим образом.

export function* watchInstanceDataSetAssocSaga() {
  yield takeLatest(
    actionTypes.FETCH_INSTANCE_DATASETS_ASSOC_INITIATE,
    fetchInstanceDataSetAssocSaga
  )
}

const actionWatchers = sagaMiddleware => {
  sagaMiddleware.run(watchInstanceDataSetAssocSaga)
}


function* fetchInstanceDataSetAssocSaga(action) {
  console.log('in saga')
 //Making Api Call
}

const composeEnhancers =
  process.env.NODE_ENV === 'development'
    ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
    : null || compose
const sagaMiddleware = createSagaMiddleware()
const store = createStore(
  rootReducer,
  composeEnhancers(applyMiddleware(sagaMiddleware))
)
actionWatchers(sagaMiddleware)

В моем компоненте контейнера я отправляю действие, чтобы вызвать сагу.

export class InstanceDatasetsAssoc extends Component {
  componentWillMount() {
    console.log('in componentWillMount')
  }
  componentDidMount() {
    if (!this.props.records.length) {
      console.log('in did mount')
      const {
        pageInfo: {
          first: { url }
        }
      } = this.props
      let paginationParams = {
        url
      }
      this.props.onFetchInstanceDataSetAssoc(paginationParams)
    }
  }
  ...
}

Когда я нажимаю URL, я получаю следующие операторы журнала.

**

  in componentWillMount
  in saga
  in did mount
  in saga

**

Моя сага вызывается дважды, а я дважды "в саге", поэтому мой вызов API происходит дважды.

Может кто-нибудь объяснить, что мне не хватает ??

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