Реагировать на навигацию - перейти к маршруту по умолчанию после обновления состояния - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть пользовательский компонент заголовка с раскрывающимися списками. Когда я изменяю свой раскрывающийся список, я отправляю setYear для обновления состояния, после чего react-navigation отправляет меня обратно на мою домашнюю страницу / маршрут по умолчанию, даже если у меня есть использовал навигацию и указал ту же страницу. Как я могу изменить состояние и остаться на той же странице / компонентный вид?

Пользовательский заголовок:

   onYearChange(e) {
      const { navigate, setYear } = this.props; 
      // dispatch action to change state
      setYear(e);

  }

  <View style={styles.alignMenu}>
      {this.state.year ? (
        <Picker
          selectedValue={year}
          label="Year"
          onChange={this.onYearChange}
          options={categories}
          style={styles.picker}
        />
      ) : (
        <View style={styles.alignMenu}>
          <TouchableHighlight
            onPress={() => this.show({ year: !this.state.year })}
          >
            <Text>
              {
                categories.find(category => {
                  return category.id == year;
                }).label
              }
            </Text>
          </TouchableHighlight>

MapDispatchToProps:

const mapDispatchToProps = dispatch => {
  return {
    setGroup: (group, categories, year) =>
      dispatch(setGroup(group, categories, year)),
    setYear: year => dispatch(setYear(year)),
    setStudent: student => dispatch(setStudent(student)),
    navigate: route => dispatch(navigate(route))
  };
};

AppNavigator:

const AppNavigator = StackNavigator({
    Home: {
        screen: HomeScreen,
        navigationOptions: ({ navigation }) => ({
            header: false
        })
    },
    Month: {
        screen: Month
    },
    Day: {
        screen: Day
    }
});

setYear использует мой setCredentials редуктор для обновления учетных данных

export function setCredentials(state = initialState, action) {
    switch (action.type) {
        case "SET_YEAR":
            return {
                ...state,
                year: action.year,
                student: 0
            };
        case "SET_STUDENT":
            return { ...state, student: action.student };
        case "SET_GROUP":
            const showStudent = !checkEmptyArray(action);
            return { ...state, group: action.group, showStudent };
        case "CLEAR_CREDENTIALS":
            return initialState;

        default:
            return state;
    }
}

Используя учетные данные, которые вы установили из формы на homescreen или моем customheader - я получаю все свои данные в моем month представлении:

componentDidMount() {
    const { year, group, student } = this.props.credentials;
    const Id = student || group || year;
    this.props.dispatch(fetchEvents(Id));
}

Как я могу отправить свое действие fetchEvents(Id) в заголовок после изменения year для обновления данных в моем приложении?

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