действия должны быть простыми объектами. используйте пользовательское промежуточное программное обеспечение для асинхронных действий, firebase, redux, redux-thunk

#firebase #react-native #redux #react-redux

#firebase #react-native #redux #react-redux

Вопрос:

Строка сообщения об ошибке на виртуальной машине ios: действия должны быть простыми объектами. используйте пользовательское промежуточное программное обеспечение для асинхронных действий. Я заметил, что возникла проблема с upLoadImageToFirebase (). Я столкнулся с этой проблемой при использовании redux и firebase. Кто-нибудь может мне помочь? Большое спасибо!

 "react-redux": "^6.0.1",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0"
"react-native": "0.58.006",
  
 upLoadImageToFirebase = (item) => {
    return storage.ref('imgProduct').child(`${item.key}.jpg`)
        .put(item.blob, { contentType: 'application/octet-stream' })
}

export const addProduct = (product) => {
    return (dispatch) => {
        let { blobs } = product;
        let urls = [];
        dispatch(startAdd());
        blobs.forEach((item) => {
            dispatch(upLoadImageToFirebase(item)).then((snapshoot) => {
                urls = urls.concat(snapshoot.ref.getDownloadURL());
            }).catch(err => {
            console.log(err)
        })
        })
    }
}
  

Комментарии:

1. Можете ли вы добавить настройки вашего хранилища? и вторая отправка также должна отправлять что-то вроде { type: 'MY_ACTION_TYPE', payload: someData }

2. Пожалуйста, опубликуйте свой src/index.js файл и ваш actions/index.js файл, если только вы не говорите мне, что у вас есть выше, это ваш создатель действия, это неясно.

Ответ №1:

Я вижу, что вы используете redux-thunk. Проверьте, добавлено ли это также в промежуточное программное обеспечение.

Комментарии:

1. Я добавил applyMiddleware (thunk) в хранилище в моем проекте.