react-native - React Native - Stack.Navigator 在博览会中不断加载我的第二个屏幕并且无法返回首页
问题描述
Stack.Navigator 一直在 expo 中加载我的第二个屏幕并且无法返回首页,这是我的导航器堆栈:
import { StatusBar } from 'expo-status-bar';
import React, {useState} from "react";
import { StyleSheet, Text, View, Button, ScrollView, TouchableOpacity, FlatList, Icon, Image, TextInput } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
const Stack = createNativeStackNavigator();
import SearchScreen from './Components/SearchScreen'
import HomeScreen from './Components/SearchScreen'
export default class App extends React.Component {
constructor(props){
super(props);
}
render(){
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="SUSH">
<Stack.Screen
name="SUSH"
component={HomeScreen}
options={({navigation})=>({
headerRight: props => <TouchableOpacity style={{ marginRight: 20 }} onPress={() => navigation.navigate("Shopping") } >
<Image
style={{ width: 50, height: 50 }}
source={require('./assets/favicon.png')}
/>
</TouchableOpacity>,
})}
/>
<Stack.Screen name="Shopping" component={SearchScreen}
/>
</Stack.Navigator>
</NavigationContainer>
);
}
}
import React, {useState} from "react";
import { StyleSheet, Text, View, Button, ScrollView, TouchableOpacity, FlatList, Icon, Image, TextInput, } from 'react-native';
const SearchScreen = ({navigation}) => {
const [value, setValue] = useState("");
React.useLayoutEffect(() => {
navigation.setOptions({
headerTitle: () => (null),
headerLeft: () => (<TouchableOpacity
onPress={() => navigation.navigate("SUSH")}
><Text>Back</Text></TouchableOpacity>),
headerRight: () => ( <TextInput style={{fontSize:16,width:305,padding:8, backgroundColor:'#e6e6e6',color:'black',}} value={value}
onChangeText={(searchtext) => setValue(searchtext)}
value={value}
placeholder={"Search"} placeholderTextColor={'#454545'}></TextInput>
),
});
}, [navigation]);
return <Text>This is {value}'s profile</Text>;
};
export default SearchScreen;
import React, {useState} from "react";
import { StyleSheet, Text, View, Button, ScrollView, TouchableOpacity, FlatList, Icon, Image, TextInput } from 'react-native';
class HomeScreen extends React.Component{
constructor(props){
super(props);
this.state = {
data: [ {item: 'fsfsf', index: 0 },{item: 'fsfsf', index: 1 }],
}
}
componentDidMount(){
fetch("https://localhost:44379/Sush/GetShoppingItems/")
.then((res) => {
})
.catch(() => {
})
}
_keyExtractor (item, index) {
return index.toString();
}
_renderItem ({ item, index }) {
return (
<TouchableOpacity style={{width:'100%',}}>
<View onStartShouldSetResponder={() => { this.props.navigation.navigate('Shopping', { name: 'Jane' }) }} style={{
backgroundColor:'red', height:150, marginLeft:10, marginRight:10, marginBottom:10, marginTop:10 }}>
</View>
</TouchableOpacity>
);
}
render(){
return (
<FlatList style={{ flex: 1, backgroundColor:'black', }}
data={this.state.data}
keyExtractor={this._keyExtractor.bind(this)}
renderItem={this._renderItem.bind(this)}
horizontal={false}
/>
);
}
};
export default HomeScreen;
解决方案
推荐阅读
- xamarin.forms - 应用程序突然不响应方向更改 Xamarin.Forms
- python - Opening file in Python 3.4.2 shell
- c# - What is = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i) - C#
- java - 数组不打印不同的对象
- javascript - How to click window on mouseover in javascript?
- jquery - DataTables 警告:表 id=Customers - 请求第 0 行第 1 列的未知参数“名称”。有关此错误的更多信息
- python - 查找长 Python 字符串的所有唯一子字符串 - 性能
- java - GridLayout JButton JOptionPane 与每个按钮的 ActionListener
- node.js - 如何使用 Node.js 在 Twilio 中更改从客户端发送的基于消息的消息的回复?
- javascript - 计数器结束时如何使用jquery将页面重定向到另一个页面?