Ich habe ein Problem mit meinem <SnackBar>
.
Es reagiert nicht, wenn ich darauf klicke.
Gibt es eine Möglichkeit, diesen Code so zu verbessern, dass er funktioniert, da ich viele Quellen aus dem Internet erfolglos ausprobiert habe?
<Snackbar
visible={snack.visible}
onDismiss={() =>
setSnack({
...snack,
visible: false,
click: false,
})
}
action={{
label: <AntDesign name="close" size={24} color="black" />,
onPress: () => {
setSnack({
...snack,
visible: false,
click: false,
});
},
}}
style={{
backgroundColor: 'red',
padding: 30,
marginLeft: 0,
}}>
<View>
<TouchableOpacity onPress={() => setSnack({...snack, click: true})}>
{snack.click === true ? (
<Text>{snack.message}</Text>
) : (
<Text>Touch me to see changes</Text>
)}
</TouchableOpacity>
</View>
</Snackbar>
und ich habe meine Zustände wie folgt richtig eingestellt:
const [snack, setSnack] = useState({
visible: false,
message: 'You clicked me',
click: false,
});
bitte hilfe
Versuche dies:
<Snackbar
visible={snack.visible}
duration={1000000}
onDismiss={() =>
setSnack({
...snack,
visible: false,
click: false,
})
}
action={{
label: <AntDesign name="close" size={24} color="black" />,
onPress: () => {
setSnack({
...snack,
visible: false,
click: false,
});
},
}}
style={{
backgroundColor: 'red',
padding: 0
}}>
<TouchableOpacity
onPress={() => setSnack({ ...snack, click: true })}>
<View style={{ flex: 1, padding: 30 }}>
{snack.click === true ? (
<Text>{snack.message}</Text>
) : (
<Text>Touch me to see changes</Text>
)}
</View>
</TouchableOpacity>
</Snackbar>
Ich habe den obigen Code auf snack.expo.io ausgeführt. Es funktioniert. Es gibt Padding um den Snack (ein Standard von Reactive-Native-Paper), wo onPress nicht aufgerufen werden kann, sowie der Abschnitt, der das Symbol hat, um den Snack zu verwerfen. Der Rest des Bereichs ruft die onPress. Das Problem war, dass onPress nur auf den Textbereich beschränkt war. Aber die Ansicht mit Stil neu anordnen: flex: 1
füllt jetzt den verbleibenden Platz aus.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen