Я настроил проект с response-redux, и я использую redux-thunk в своих создателях действий для выполнения выборки. Вот пример моего thunk:
export const doPostRequest = id => {
return (dispatch, getState) => {
const { id : initiailId } = getState().currentSelection
return api.post(id).then(response => {
if (!isEqual(initialId, getState().currentSelection.id)){
return;
}
dispatch(someOtherAction(id))
return Promise.resolve(true)
})
.catch(err => {})
}
}
Как вы можете видеть, я хочу избежать doPostRequest, если текущий выбор моего состояния изменяется к моменту получения ответа. В противном случае я возвращаю Promise.resolve (true), чтобы onSubmit в MyComponent мог сбросить форму:
Внутри компонента (который является формой) у меня есть следующее для onSubmit:
class MyComponent extends React.PureComponent{
onSubmit = id => {
this.props.dispatch(doPostRequest(id))
.then(shouldReset => shouldReset && resetForm())
}
render(){
return <form onSubmit={this.onSubmit}>.....</form>
}
}
В большинстве случаев, когда мне действительно не нужно ничего делать, кроме выборки значений, я не выполняю цепочку Promise для thunk, даже если она возвращает обещание, но здесь мне нужно выполнить resetForm после завершения запроса успех.
Достаточно ли хороша эта реализация, в том числе и для GC? Как сборка мусора Promises? Есть ли проблема, если я возвращаю fetch (). Then () без дальнейшей цепочки?