Возникла проблема с моим редуктором. Я могу извлечь из массива базы данных по команде + S, но когда я делаю жесткий refre sh, он не может найти данные.
- И я получаю ошибку: undefined не является объектом (оценка 'quizFire [0]') *
Я могу загрузить массив quizFire, я просто не могу вызвать любой из его элементов. Я пробовал несколько вариантов, но я не уверен, правильно ли я храню или вызываю базу данных.
import React, {useEffect} from 'react';
import { View, Text, } from 'react-native';
import { useSelector, useDispatch } from 'react-redux';
import * as paidRoundActionFire from '../store/action/paidRoundAction';
const ThirdRound = props =>{
const dispatch = useDispatch();
useEffect(() => {
dispatch(paidRoundActionFire.fetchProducts());
}, [dispatch]);
const quizFire = useSelector(state => state.paidQuiz.questionsFire);
return(
<View>
<Text>
{quizFire[0].answer1}
</Text>
</View>
)
}
export default ThirdRound;
//Store Reducer
import { Dimensions } from 'react-native';
import { SET_QUESTIONS } from '../action/paidRoundAction';
var {height, width} = Dimensions.get('window');
//const incrementToMoveForward = (width+30)/20;
const initialState = {
//totalCount: questions.length,
questionsFire: [],
};
export default (state = initialState, action) => {
//state.activeQuestionIndex + 1;
switch (action.type) {
case SET_QUESTIONS: {
return {
questionsFire: action.questionsFireRecall,
}
}
default:
return {state};
}
};
//Store Action
import Questions from "../../models/questions";
export const SET_QUESTIONS = 'SET_QUESTIONS';
export const fetchProducts = () => {
return async dispatch => {
try {
//any async code you want
const response = await fetch(
'https://my-quiz-questions.firebaseio.com/questions.json',)
const resData = await response.json();
console.log("async/await based");
const loadedQuestions = [];
for (const key in resData) {
loadedQuestions.push(
new Questions(
key,
resData[key].answer1,
resData[key].answer2,
resData[key].answer3,
resData[key].correctAnswer,
resData[key].explanation,
resData[key].question
)
)
}
dispatch({ type: SET_QUESTIONS, questionsFireRecall: loadedQuestions });
}
catch (err) {
// send to custom analytics server
throw err;
}
};
};