【发布时间】:2021-11-20 16:26:12
【问题描述】:
在react-native 中是否可以使用不同的参数导航同一条路线?当我尝试它时,它一直给我一个错误,说参数未定义。这是我的代码:
function Home({ route, navigation }){
const { newText } = route.params;
return (
<View style={styles.container}>
<Text style={{fontSize:30, paddingVertical:150, fontWeight:'bold'}}>Current Balance: {JSON.stringify(newText)} PHP</Text>
<TouchableOpacity style={styles.btnLogin1} onPress={()=>navigation.navigate("AddBalance")}>
<Text style={styles.btnLogin}>Add Balance</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.btnLogin1} onPress={()=>navigation.navigate("ViewCode")}>
<Text style={styles.btnLogin}>View Code To Pay</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.btnLogin1} onPress={()=>navigation.navigate("Login")}>
<Text style={styles.btnLogin}>Logout</Text>
</TouchableOpacity>
</View>
);
}
function AddBalance({ navigation }){
const[balance, newBalance] = useState(0)
const[amount, setAmount] = useState()
function addTogether(){
const Total = balance + amount;
newBalance(Total);
MyFunction();
}
return (
<View style={styles.container}>
<Text style={{fontSize:30, paddingVertical:20, fontWeight:'bold'}}>Add Balance</Text>
<TextInput style={styles.inputBox} placeholder="Enter Amount" keyboardType={'numeric'}
onChangeText={(text) => setAmount(Number.parseInt(text))}></TextInput>
<TouchableOpacity style={styles.btnLogin1} onPress ={addTogether}>
<Text style={styles.btnLogin}>Continue</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.btnLogin1} onPress={()=>navigation.navigate("Home", {newText:
balance})}>
<Text style={styles.btnLogin}>Back</Text>
</TouchableOpacity>
</View>
);
}
function ViewCode({ navigation }){
return (
<View style={styles.container}>
<Text style={{fontSize:30, fontWeight:'bold'}}>Your Code is:</Text>
<Text style={{fontSize:20, textAlign:'center'}}>R3fGH7X95iW</Text>
<TouchableOpacity style={styles.btnLogin1} onPress={()=>navigation.navigate("Home")}>
<Text style={styles.btnLogin}>Back</Text>
</TouchableOpacity>
</View>
);
}
所以当我导航到ViewCode 付款并单击返回按钮时,错误就出现了。我该如何解决这个问题?我还为家庭创建了一个重复屏幕以设法返回主屏幕,但是当我尝试导航到重复的主屏幕时,当前余额再次变为 0。我想要做的是每当用户返回主屏幕时,当前余额将基于用户添加的余额。
【问题讨论】:
-
我认为这应该是可能的,但更好的方法是设置一个 redux 存储。
-
你能发布完整的错误信息吗?
-
在这里你可以找到一个工作样本 -> snack.expo.dev/@m.bahl/…
-
渲染错误 undefined is not an object(evalating 'route.params.newText')
-
当我导航到添加余额按钮并单击添加余额中的后退按钮时,我实际上可以看到位于家中的当前余额的变化。但是,当我去查看代码以支付时按钮并单击其中的后退按钮将引发错误或更改当前余额并设置为0。
标签: reactjs react-native