Я знаю, что на этот же вопрос по SO есть много ответов, однако я их прочитал, и, похоже, ни один из них не решает проблему, которую я вижу. действительно нужна чья-то помощь в этом.
сценарий: у нас есть существующее приложение React Native (v0.42.3), которое есть в App Store, и все было хорошо. Сегодня из-за ошибочной сторонней библиотеки нам пришлось удалить node_modules и перестроить. Это было сделано, и никаких проблем. Приложение запускается нормально. Однако теперь по какой-то причине процесс входа в систему прерван, и это «кажется» из-за Redux. Это простой процесс входа в систему. Надеюсь, вот все подробности:
пользователь нажимает логин -> создатель действия вызова -> успех -> редуктор вызова -> состояние обновления, которое вызывает mapStateToProps (состояние)
проблема, которую я пока не могу решить - это:
1) mapStateToProps запускается, и вы можете видеть, что необходимое свойство (displayLoginModal) изменилось с true на false
2) componentWillReceiveProps НЕ запускается, что мешает работе приложения
Создатель действий
..auth worked fine, then call..
dispatch({
type: LOGIN_USER_SUCCESS,
payload: { user: userInfo },
greeting: isNewUser ? "welcome" : "hi",
isLoggedIn: true,
waitingForLoginCompletion: false
});
dispatch({ type: SHOW_LOGIN_MODAL, display: false });
Редуктор
case SHOW_LOGIN_MODAL:
return {
...state,
displayLoginModal: action.display
};
case LOGIN_USER_SUCCESS:
return {
...state,
user: action.payload,
greeting: action.greeting,
error: "",
loginUserError: "",
faceBookLoading: false,
googleLoading: false
};
Компонент приема / прослушивания (LoginView)
я использую декоратор @connect
Вот функция mapStateToProps:
function mapStateToProps(state) {
console.info(state) <== **IMPORTANT. this IS showing that the prop has changed
const {
email,
password,
error,
... etc...
displayLoginModal <== this is the prop that IS changing (from true, to false)
} = state.auth;
return {
..snip.. other props etc...
displayLoginModal, <== returning it here
isConnectedToFirebase
};
}
....
@connect(
mapStateToProps,
{
updateTermsOfUseAndPrivacy,
emailChanged,
passwordChanged,
errorMessageChanged,
loginUserWithEmail,
loginUserWithFacebook,
facebookLogin,
googleLogin,
loginUserWithGoogle,
resetUserPassword,
setTermsOfUseAndPrivacy,
logout,
resetPasswordComplete
}
)
export default class LoginView extends Component {
... etc
Итак, еще раз - даже подумал, что mapStateToProps срабатывает и правильно отображает изменение значения свойств - по какой-то странной неизвестной мне причине componentWillReceiveProps НЕ срабатывает.
Почему ? На данный момент это серьезный блокировщик для нас, поэтому очень признателен за помощь и совет. Надеюсь, это что-то очевидное, что я пропустил.





хорошо - это отсортировано. проблема здесь НИЧЕГО не имела отношения к Redux. Это было из-за пропавшего маршрута. Не то чтобы какие-либо загадочные / несуществующие сообщения об ошибках имели к этому какое-либо отношение. Я беру на себя ответственность, но скажу, что официально больше не являюсь поклонником React Native. смерть от тысячи порезов.