Я пытаюсь получить изображение, хранящееся в массиве на одном экране, и установить его в качестве источника изображения на другом экране. По существу, когда пользователь касается определенного изображения, это точное изображение будет перенесено на следующий экран. Проблема в том, что я получаю сообщение об ошибке: undefined is not an object (evaluating 'navigation.getParam')
код выглядит следующим образом: Экран 1
this.state = {
messageItem: null,
chat: [{
convo: [Chat1, Chat2, Pic1, Chat4, Chat5, Chat6],
}]
}
openMessage = (bub) => {
this.setState({
messageItem: bub
});
console.log({ bub })
}
renderChat = () => {
return this.state.chat.map((bub, index) => {
return bub.convo.map((convo, i) => {
if (bub.convo[i])
return (
<Avatar
key={i}
size="medium"
containerStyle={{
marginRight: 15, shadowOpacity: 0.3,
shadowRadius: 2,
shadowColor: 'black'
}}
rounded
source={bub.convo[i]}
onPress={() => { this.openMessage({ convo: bub.convo[i] }) }
} />
)
})
})
}
renderChat = () => {
return this.state.chat.map((bub, index) => {
return bub.convo.map((convo, i) => {
if (bub.convo[i])
return (
<Avatar
key={i}
size="medium"
containerStyle={{
marginRight: 15, shadowOpacity: 0.3,
shadowRadius: 2,
shadowColor: 'black'
}}
rounded
source={bub.convo[i]}
onPress={() => { this.openMessage({ convo: bub.convo[i] }) }
} />
)
})
})
}
render(){
{ this.renderChat() }
{ this.state.messageItem && this.props.navigation.navigate('ChatScreen', { avatarPicture: this.state.messageItem.convo }) }
}
необходимо коснуться аватара, что приведет к ChatScreen, и этосоответствующий код выглядит следующим образом:
render() {
const { navigation } = this.props;
<Avatar
size="medium"
containerStyle={{ alignSelf: 'center', position: 'absolute', justifyContent: 'center', marginTop: 28 }}
rounded
source={navigation.getParam('avatarPicture')}
/>
}