Реагировать Навигация Кнопка Назад ничего не делает - PullRequest
0 голосов
/ 28 сентября 2019

В основном то, что говорит название.Я пытаюсь создать кнопку возврата, передав текущую страницу routeName в состояние навигации, а затем на странице сведений получаю параметры и передаю routeName в кнопку goBack.Но когда я нажимаю кнопку, она ничего не делает.Я проверил, находится ли routeName предыдущей страницы в состоянии, но он по-прежнему ничего не делает.

Экран списка Вот моя кнопка, я передаю идентификатор из редуктора и routeName текущего экрана впараметры навигации

renderList = () => {
    const { lists } = this.props;
    if(lists) {
        return (lists.data.map(el => {
            return (
                <TouchableOpacity
                    key={el.id}
                    onPress={ () => this.props.navigation.navigate('PostItem', { nid: el.id, prevScreen: this.props.navigation.state.routeName})}>
                    <Text>Next Screen</Text>
                </TouchableOpacity>
            )}
        ))
    }
}

Экран ListDetail

class listDetail extends Component {

        constructor(props) {
            super(props);
        }

        componentDidMount() {
            this.props.loadPost('article', this.props.navigation.state.params.nid + '?include=field_image')
        }

        render() {
            const { goBack } = this.props.navigation;
            return (
                <View>
                    <Button title="Back" onPress={() => goBack(this.props.navigation.state.params.prevScreen)} />
                    { this.renderPost() }
                </View>
            )

        }
    }

есть предложения?

1 Ответ

0 голосов
/ 28 сентября 2019

Параметр в goBack относится к key, а не к routeName.

Из реактивной навигации goBack docs

Примечание. Ключ - это не имя маршрута, а уникальный идентификатор, который вы указали при переходе к маршруту.Смотрите навигационную клавишу.Так что в вашем примере я бы попытался вызвать навигацию с ключевым параметром

Для renderList onPress может быть

onPress={ () => this.props.navigation.navigate({ routeName: 'PostItem', key: `PostItem_${el.id}`, params: { nid: el.id } })}>

Тогда в ListDetail

<Button title="Back" onPress={() => goBack(`PostItem_${this.props.navigation.state.params.nid}`)} />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...