React Собственные компоненты Native не обновляются после обновлений магазина приставок. Что меня беспокоит, так это то, что раньше это делало, а затем в один прекрасный день перестало работать.
Диспетчер работает правильно, и магазин корректно обновляет состояние, не изменяя его.
Я пытался вернуть новый объект, который не имеет ничего общего со старым состоянием, но все же не повезло. Я также пытался использовать componentWillReceiveProps, но он не вызывается.
Компонент
import React from 'react';
import { connect } from 'react-redux';
import { MonoText } from '../components/StyledText';
import { bindActionCreators } from 'redux';
import * as airportActions from '../../shared/redux/modules/airports';
class HomeScreen extends React.Component {
render() {
const { addAirports } = this.props;
return (
<View style={styles.container}>
<ScrollView style={styles.container} contentContainerStyle={styles.contentContainer}>
<View>
<FlatList
horizontal={true}
data={this.props.airports.airports}
renderItem={({item}) => <Text>{item.key + " "}</Text>}
// extraData={this.state}
/>
</View>
<Button
onPress={() => this.props.switchAirports()}
title="SWITCH"
color="#841584"
accessibilityLabel="Learn more about this purple button"
/>
</ScrollView>
</View>
);
}
const mapStateToProps = (state) => {
const { airports } = state
return { airports }
};
const mapDispatchToProps = dispatch => (
bindActionCreators(airportActions, dispatch)
);
export default connect(mapStateToProps, mapDispatchToProps)(HomeScreen);
1010 * Переходник *
const SWITCH = 'airports/switch';
export default function reducer(state = INITIAL_STATE, action) {
switch (action.type) {
case SWITCH:
const newState = Object.assign({}, state);
[newState.airports[0], newState.airports[1]] = [newState.airports[1], newState.airports[0]];
return newState
default:
return state
}
};
export function switchAirports() {
return { type: SWITCH }
}
Комбинированный редуктор
import { combineReducers } from 'redux';
import airports from './airports';
import galleryState from './gallery'
export default combineReducers({
galleryState,
airports,
});
Когда я нажимаю кнопку Toggle, я ожидаю, что 2 первых аэропорта поменяются. Они делают в магазине, и они будут переключены в магазине после того, как я снова нажму «Переключить». Но эти изменения состояния никогда не отражаются на опорах компонента.
Опять же, раньше это работало, но вдруг перестало работать. Не только для этого компонента, но и для другого и другого редуктора.