Реакция компонентов компонента «Редукс» не обновляется после обновления магазина - PullRequest
0 голосов
/ 27 апреля 2019

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 первых аэропорта поменяются. Они делают в магазине, и они будут переключены в магазине после того, как я снова нажму «Переключить». Но эти изменения состояния никогда не отражаются на опорах компонента.

Опять же, раньше это работало, но вдруг перестало работать. Не только для этого компонента, но и для другого и другого редуктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...