Я новичок в программе redux-saga, и в качестве задачи я подумал, что постараюсь преобразовать большое существующее приложение React из Promises в redux-saga.Я добился определенного прогресса, но одна проблема, с которой я столкнулся, заключается в том, что когда я использовал Promises, я мог устанавливать локальные переменные компонента в зависимости от того, выполнено ли обещание или отклонено.Теперь кажется, что я просто «передаю» запрос на redux-saga и никогда не знаю (на сайте вызовов), выполнил ли он или нет, и теперь я не знаю (в рамках моего компонента), успешно ли он выполнен или нет.
Например, допустим, у меня есть вызов на основе обещаний, который выбирает игры моего пользователя
getCurrentGamesForUser = (nickname, token) => {
return logic.getGamesForUser(nickname, token)
.then(currentGames => {
this.needToUpdateGamesFlagFromSocketIO = false
this.setState({currentGames})
sessionStorage.setItem('currentGames', JSON.stringify(currentGames))
})
.catch(({message}) => this.onError(message))
}
Здесь я устанавливаю флаг this.needToUpdateGamesFlagFromSocketIO
, а также sessionStorage
переменная - если мое обещание выполнится.
Теперь, насколько я понимаю, я бы преобразовал это в
getCurrentGamesForUser = (nickname, token) => {
this.props.dispatch(getCurrentGames(nickname,token))
}
, и это прекрасно работает.Если есть ошибка, она будет отправлена в хранилище из саги, и мой компонент отразит это.
Но что мне делать с локальными флагами и хранилищем сеанса?Нужно ли добавить их в магазин?Это кажется грязным путем, если у меня не было отдельного хранилища для каждого компонента, локального хранилища для каждого компонента, что также кажется грязным.Я видел обсуждение подобной темы здесь, https://github.com/redux-saga/redux-saga/issues/907,, но, похоже, нет ответа.Я уверен, что мне не хватает «избыточного способа» обработки всего этого, и поэтому приветствую любые указания.