Эй, у меня есть экран поиска "поиск песен / исполнителей" Так что после отправки запроса я хочу отобразить "Верхние вкладки", поэтому я добавляю верхнюю вкладку "createMaterialTopTabNavigator"
внутри отдельных файлов и затем импортируйте его как компонент, чтобы использовать его внутри экрана поиска, как это <SearchTabs />
Но я получил ошибку
Инвариантное нарушение: для этого навигатора отсутствует навигационная опора. В реакции-навигации v3 и v4 вы должны настроить контейнер приложения напрямую. Дополнительная информация: https://reactnavigation.org/docs/en/app-containers.html
lib
"react-navigation": "^4.1.0",
"react-navigation-drawer": "^2.3.3",
"react-navigation-stack": "^2.0.16",
"react-navigation-tabs": "^2.7.0",
Код верхней вкладки
import {createMaterialTopTabNavigator} from 'react-navigation-tabs';
import resultArtists from './resultArtists';
import resultSongs from './resultSongs';
const SearchTabNavigator = createMaterialTopTabNavigator(
{
Songs: {
screen: resultSongs,
navigationOptions: {
tabBarLabel: 'Songs',
},
},
Artists: {
screen: resultArtists,
navigationOptions: {
tabBarLabel: 'Artists',
},
},
},
);
export default SearchTabNavigator;
, затем я импортирую его в createStackNavigator ' Root. js Навигационный файл 'вот так
SearchTabs: {
screen: SearchTabNavigator,
},
вот код поиска "Содержит входные данные, тогда я хочу отображать верхние вкладки"
class Search extends PureComponent {
render() {
return (
<Container style={styles.container}>
<View style={styles.searchHeader}>
<Input
onChangeText={text => this.search(text)}
value={this.state.searchText}
onSubmitEditing={this.onSearch}
returnKeyType="search"
placeholderTextColor="white"
style={styles.searchInput}
/>
</View>
<SearchTabNavigator />
</Container>
)
}
}
export default Search;
Окончательный результат должен быть примерно таким
То, что я пробовал
Я добавляю новый createAppContainer
, чтобы обернуть верхние вкладки, как это в 'Top Файл вкладок '
export const Tabs = createAppContainer(SearchTabNavigator);
И он работает нормально.
, но я думаю, что это неправильный способ, добавить два AppContainer в одно приложение: \
И когда я хотите перейти от любого элемента «песни» к экрану проигрывателя «он находится в другом AppContainer», он не работает!