至于對本機反應的新手,我如何從 usestate 獲取更新的值并將其應用于另一個函式?例如這是我的代碼:
function HomeScreen({ navigation }) {
return (
<View style={styles.container}>
<TouchableOpacity
style={styles.scanButton}
title="Scan"
onPress={() => navigation.navigate("BarcodeScanner")}
>
<Text style={styles.scanText}>Scan</Text>
</TouchableOpacity>
<TextInput
style={styles.input}
placeholder="Barcode Value ... "
// i want to put the updated value here in "value"
value=""
/>
</View>
);
}
function BarcodeScanner() {
const [barcodeData, setBarcodeData] = useState();
const handleBarCodeScanned = ({ data }) => {
setScanned(true);
Alert.alert("Result", `Barcode data ${data} has been scanned!`, [
{
text: "Cancle",
onPress: () => console.log("Cancle pressed"),
},
{
text: "Apply",
onPress: () => setBarcodeData(data),
},
]);
};
我已經嘗試了幾個小時,但我沒有找到解決方案,有什么建議嗎?
uj5u.com熱心網友回復:
我們可以把barcodeData后面傳給HomeScreenusing route params。實際上,從您提供的代碼中,我們可以洗掉狀態并直接BarcodeScanner傳入函式。datahandleBarCodeScanned
這可以如下實作。我假設這HomeScreen是Screen在導航器中定義的。
function BarcodeScanner() {
const navigation = useNavigation()
Alert.alert("Result", `Barcode data ${data} has been scanned!`, [
{
text: "Cancle",
onPress: () => console.log("Cancle pressed"),
},
{
text: "Apply",
onPress: () => navigation.navigate("HomeScreen", {data: data}),
},
]);
};
在Homescreen中,我們處理狀態。
function HomeScreen({ navigation, route }) {
const [barcodeData, setBarcodeData] = useState();
useEffect(() => {
if (route.params) {
setBarcodeData(route.params.data)
}
}, [route.params])
return (
<View style={styles.container}>
<TouchableOpacity
style={styles.scanButton}
title="Scan"
onPress={() => navigation.navigate("BarcodeScanner")}
>
<Text style={styles.scanText}>Scan</Text>
</TouchableOpacity>
<TextInput
style={styles.input}
placeholder="Barcode Value ... "
value={barcodeData}
/>
</View>
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443817.html
上一篇:在本機反應中獲得無效的鉤子呼叫
