Документы vue-native-router предоставляют хороший пример того, как реализовать навигацию для переключения между экранами, которая до сих пор работала в моем небольшом демонстрационном приложении, которое я пытаюсь создать, чтобы получить понять, как все работает.
Основы, необходимые для перехода от одного экрана к другому в шаблоне экрана, пока таковы:
<template>
<view class="o-container">
<button title="ChangeView" :on-press="goToMyNewFancyView" />
</view>
</template>
<script>
export default {
props: {
navigation: {
type: Object
}
},
methods: {
goToMyNewFancyView() {
this.navigation.navigate('MyNewFancyView');
}
}
};
</script>
(я пропустил основную настройку StackNavigator
, поскольку она полностью такая же, как в документах и не очень полезна для этого вопроса, см. Ответ TJ Weems).
Моя цель теперь состоит в том, чтобы иметь список компонентов, которые отображают заголовок и описание. При нажатии на компонент экран должен быть изменен на подробный вид компонента. Таким образом, я попытался реализовать то же самое для моего компонента:
<template>
<view>
<text>This is a component.</text>
<button title="show more" :on-press="show" />
</view>
</template>
<script>
export default {
props: {
navigation: {
type: Object
}
},
methods: {
show() {
this.navigation.navigate('MyShowView');
}
}
};
Однако this.navigation
- это undefined
внутри компонента vue. Почему-то я не понимаю здесь связи и не могу найти ничего подходящего, что могло бы объяснить это. Я также не уверен, что это правильный путь, или навигация вообще должна происходить вне компонента.
Как реализовать ссылку из компонента, который представляет собой тизер, на фактический экран подробностей?
Зависимость:
"dependencies": {
"expo": "^32.0.0",
"react": "16.5.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz"
},
"devDependencies": {
"@babel/core": "^7.0.0-0",
"babel-preset-expo": "^5.0.0",
"vue-native-core": "0.0.8",
"vue-native-helper": "0.0.10",
"vue-native-router": "0.0.1-alpha.3",
"vue-native-scripts": "0.0.14"
},