Я передаю параметры с помощью экрана навигации, чтобы отобразить конкретный экран на основе значения параметра. У меня есть пустое состояние на экране, который хранит входящий параметр, но состояние не обновляется. Метод рендеринга отображает параметр условия else, поскольку он получает только начальное состояние пустым.
Вот мой код:
Home.js
import React, { Component } from 'react'
import { Text, View, TouchableOpacity, StyleSheet, Image, ImageBackground } from 'react-native'
const bgImage = require('../../assets/background.png')
export default class Home extends Component {
render() {
const {navigate} = this.props.navigation;
return (
<ImageBackground source={bgImage} style={{width: '100%', height: '100%'}}>
<View style={styles.overlay}>
<TouchableOpacity style={{marginVertical: 15}}
onPress={()=>navigate('Dashboard', {param:'sales'})}>
<Image
source={require('../../assets/sales.png')}
style={{borderRadius: 20, width: 300, height: 90}}
/>
</TouchableOpacity>
<TouchableOpacity
onPress={()=>navigate('Dashboard', {param:'claims'})}>
<Image
source={require('../../assets/claims.png')}
style={{borderRadius: 20, width: 300, height: 90}}
/>
</TouchableOpacity>
</View>
</ImageBackground>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#f5fcff",
},
overlay: {
flex:1,
backgroundColor:'rgba(0, 0, 0, 0.7)',
justifyContent: 'center',
alignItems: 'center'
}
});
Dashboard.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
import SalesDashboard from './SalesDashboard';
import ClaimsDashboard from './ClaimsDashboard';
export default class Dashboard extends Component {
constructor(props) {
super(props)
this.state = {
paramName: ''
}
}
componentDidMount(){
const paramName = this.props.navigation.getParam('param');
this.setState({paramName});
console.log(this.state.paramName)
}
render() {
return (
<View>
{this.state.paramName === 'sales'? <SalesDashboard />: <ClaimsDashboard /> }
</View>
)
}
}
Независимо от того, какой параметр я передаю, он всегда отображает ApplicasDashboard Только экран.
Пожалуйста, помогите решить эту проблему