Я пытаюсь понять, как вернуть обещание от Redux Action Creator.Я прочитал эти две статьи, но не мудрее.Может быть, я просто ненормальный.;)
https://redux.js.org/advanced/middleware https://medium.com/collaborne-engineering/returning-promises-from-redux-action-creators-3035f34fa74b
- Мой компонент вызывает действие с именем
startCreateNote()
- Действие вызывает API базы данных
- Операция базы данных завершает и разрешает объект {newCreated-id, reduxStoreObject}
- Отправляется создатель действий
- Теперь я хочу дождаться разрешения создателя действий Redux, прежде чем продолжить
- Показать тостер после того, как Action Creator разрешил
См. Код ниже.
//ADD_NOTE action generator
export const addNote = (id, note) => ({
type: ADD_NOTE,
id,
note
})
export const startAddNote = (noteData = {}) => {
return (dispatch, getState) => {
//Database API Instruction object
const apiInstruction = { action: DB_ACTION_ADD, payload: noteData, uid: getState().auth.uid }
//Call database API to insert Note into Database
return noteDatabaseAPI(apiInstruction)
.then(({id, reduxStoreObj}) => {
//The database API resolves id of newly created Note & reduxStore object
//THIS IS WHAT I WANT TO ACHIEVE!
dispatch(addNote(id, reduxStoreObj)).then(
toast("New note saved!")
).catch(
toast.error("ERROR - Note was not saved!")
)
}).catch( (err) => {
//This gets triggered with error message:
//database fail! - TypeError: "dispatch(...).then is not a function"
console.log('database fail! -', err)
})
}
}
Как я могу заставить моего Action Creator вернуть обещание?