我TabNavigator
里面有相机。代码示例:
我的index.android.js
const MainNavigator = TabNavigator({
Home: { screen: QRcreatorScreen },
Contacts: { screen: ContactsScreen },
Camera: { screen: CameraScreen },
Profile: { screen: ProfileScreen },
}, {
tabBarPosition: 'bottom',
lazy: true
});
和我的相机页面:
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>
)}
/>
);
};
}
只需简单的二维码阅读器。
下一个问题是:当TabNavigator
设置了选项时,在应用程序启动lazy == false
时TabNavigator
渲染他的所有场景。
什么时候lazy == true
,场景被调用时正在渲染,但是当我们调用最后一个场景(在我们的例子中Profile
)时,前面的所有场景也在渲染。
所以当我点击 时Profile
,需要一些时间来加载所有场景,这对应用程序性能非常不利。
我需要做什么才能使相机页面仅在被调用时才呈现?
还有一个问题:当我们离开相机场景时,相机还在工作,离开场景时如何关闭它?
我正在使用正在使用react-native-qrcode-scanner
的包react-native-camera: ^0.10.0