Мои реквизиты не обновляются при изменении состояния. Я НЕ изменяю состояние ни в одном из редукторов, и все работает как надо, кроме того, что мой реквизит не обновляется.
Мой основной компонент с функцией подключения, все передается другим компонентам через реквизиты:
const mapStateToProps = state => ({
blocks: state.blocks,
quizes: state.quizes,
auth: state.auth,
courses: state.courses,
tasks: state.tasks
});
const mapDispatchToProps = dispatch => ({
authActions: bindActionCreators(authActions, dispatch),
quizActions: bindActionCreators(quizActions, dispatch),
blockActions: bindActionCreators(blockActions, dispatch),
courseActions: bindActionCreators(courseActions, dispatch),
taskActions: bindActionCreators(taskActions, dispatch)
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(BlockList);
Мой тест-редуктор:
// @flow
import AnyAction from "redux";
import { ActionTypes } from "./../constants";
const initialState = {
rightAnswers: 0,
index: 0,
wrongAnswers: 0,
uri: null
};
const someReduceFunction = () => {};
export default function Quizes(state = initialState, action: AnyAction) {
switch (action.type) {
case ActionTypes.RIGHT_ANSWER:
return Object.assign({}, state, {
index: state.index + 1,
rightAnswers: state.rightAnswers + 1,
uri: "https://www.shareicon.net/data/256x256/2016/08/20/817720_check_395x512.png"
});
case ActionTypes.WRONG_ANSWER:
return Object.assign({}, state, {
index: state.index + 1,
wrongAnswers: state.wrongAnswers + 1,
uri: "https://www.cpronetwork.com/media/d10b9ef5fc45ce16ba12240e263a7d8b.png?preset=m-thumb"
});
default:
return state;
}
}
Действие теста:
// @flow
import { ActionTypes } from "../constants";
export const rightAnswer = () => {
return {
type: ActionTypes.RIGHT_ANSWER
};
};
export const wrongAnswer = () => {
return {
type: ActionTypes.WRONG_ANSWER
};
};
Quiz.js: quizActions и викторины оба проходят весь путь через реквизиты:
const { navigation } = this.props;
const { task, image, quiz, rightAction, block, quizes, quizActions } = navigation.state.params;
const { rightAnswers, index, wrongAnswers, uri } = quizes;
console.log(quizes);
const current = quiz.questions[index];
const percentage = (rightAnswers / quiz.numberOfQuestions) * 100;
.
.
.
<Button
style={styles.button}
label={current.option1}
onPress={() => {
if (current.option1 === current.rightAnswer) {
quizActions.rightAnswer();
} else {
quizActions.wrongAnswer();
}
}}
/>
console.log (викторины) выводит исходное состояние. Тогда ничего не печатает.
Из файлов console.logs в действии и редуктора я знаю, что состояние меняется. Только реквизиты - это не так.
Это может быть проблемой во всех моих приложениях, я не уверен.
Редактировать: оно обновляется так, как должно быть в более высоких компонентах, поэтому это не такпроблема во всем приложении