J'ai TabNavigator
avec caméra à l'intérieur. Exemple de code:React-Native TabNavigator avec caméra (appareil photo est toujours allumé)
Mes index.android.js
const MainNavigator = TabNavigator({
Home: { screen: QRcreatorScreen },
Contacts: { screen: ContactsScreen },
Camera: { screen: CameraScreen },
Profile: { screen: ProfileScreen },
}, {
tabBarPosition: 'bottom',
lazy: true
});
et ma page de la caméra:
export default class CameraScreen extends React.Component {
static navigationOptions = {
title: 'Camera',
};
emitContact() {
alert("Contact been added");
}
render() {
return (
<QRCodeScanner onRead={(e) => {
SetNewContact(e.data,() => { this.emitContact() })
}}
topContent={<Text>Just show me another code</Text>}
showMarker={true}
bottomContent={(
<TouchableOpacity style={styles.buttonTouchable}>
<Text style={styles.buttonText}
onPress={() => this.props.navigation.dispatch(resetAction) }>OK. Got it!
</Text>
</TouchableOpacity>
)}
/>
);
};
}
Tout simplement lecteur de code QR.
Le problème est le suivant: lorsque dans l'option TabNavigator
est réglée lazy == false
, TabNavigator
toutes ses scènes render lorsque l'application commence. Les scènes sont rendues quand elles sont appelées, mais quand nous appelons la dernière scène (dans notre cas, Profile
), toutes les scènes qui sont devant sont également affichées.
Donc, quand je tape sur Profile
, il faut un certain temps pour charger toutes les scènes, et c'est vraiment mauvais pour les performances de l'application.
Que dois-je faire pour que la page de la caméra ne soit rendue que lorsqu'elle est appelée?
Et une autre question: lorsque nous quittons la scène de la caméra, l'appareil photo fonctionne toujours, comment puis-je l'éteindre quand quitter la scène?
J'utilise package react-native-qrcode-scanner
qui utilise react-native-camera: ^0.10.0