# #reactjs #firebase #react-native #redux #react-redux
#реагирует на #огневая база #реагировать-родной #возвращение #реагировать-переделывать
Вопрос:
я использую react native и firebase v9 и redux , когда я пытаюсь получить данные (сообщения) из firebase firestore и обновить свой магазин redux, чтобы использовать его в своем компоненте сообщений, я получаю новое состояние redux, но с нулевым значением кажется, что я что-то пропустил
это мое сообщение, которое я возвращаю:
lt;View style={styles.container}gt; {firebaseMessages.map((fireMessage) =gt; ( lt;Textgt; this is our message{fireMessage.message}lt;/Textgt; ))} lt;View style={styles.inputField}gt; lt;Text style={styles.label}gt;Email Adresselt;/Textgt; lt;TextInput style={styles.input} onChangeText={onChangeMessage} value={message.messageText} textContentType="emailAddress" placeholder="demo@demo.com" placeholderTextColor={"grey"} /gt; lt;TouchableOpacity style={styles.button1} onPress={handleMessageSend}gt; lt;Text style={styles.signup}gt;Sign Inlt;/Textgt; lt;/TouchableOpacitygt; lt;/Viewgt; lt;/Viewgt;
и это моя функция handleMessageSend
const dispatch = useDispatch(); const handleMessageSend = () =gt; { dispatch(getMessages()); }
и это моя функция GetMessages в файле моих действий
export const getMessages = () =gt; { const myActionMessages = onSnapshot(collection(db, "messages"),(snapshot)=gt;{ const myData = snapshot.docs.map((doc) =gt; doc.data()) console.log(myData) }); return { type: GET_MESSAGES, payload: myActionMessages } }
и это мое сообщение.
const initialState = { messages: [ { id:1, message:"this is static", username:'static user' }, ] }; export const messagesReducer = (state = initialState , action) =gt; { switch (action.type) { case GET_MESSAGES: console.log("from reducer") console.log("this is ",action.payload) return{...state, messages:[...state.messages,action.payload] }; default: return state; } };
я уверен, что я не пропустил ни одного файла импорта или что-то в этом роде, но я думаю, что я неправильно его закодировал
Комментарии:
1. Вы ничего не возвращаете в своем
onSnapshot
заключении. Но это только первая проблема. Вам также придется смириться с тем фактом, чтоonSnapshot
информация будет возвращаться так же синхронно -вы не сможете сразу вернуть из нее значение.