Насколько я понимаю, вы пытаетесь отправить данные обратно со второго экрана на первый.Одним из решений является создание внутри первого экрана функции, которую вы передаете на второй экран.
Таким образом, вы объявляете функцию на первом экране, где вы обновляете состояние с заголовком:
returnTitle(uri, title) {
const {previews} = this.state;
previews.push({uri, title});
this.setState({previews});
}
И вы передаете эту функцию при переходе на второй экран:
navigate('ImagePreview', {
uri: result.uri,
returnTitle: this.returnTitle.bind(this)
});
На втором экране вы определяете обработчик onPress для вашей кнопки, где вы вызываете функцию returnTitle и возвращаетесь назад:
onSavePress = () => {
const {title} = this.state; // Not sure where you store the title
const {navigation} = this.props;
const uri = navigation.getParam('uri');
navigation.state.params.returnTitle(uri, title);
navigation.goBack();
}
Не забудьте получить заголовок из вашего ввода.Код не отображается, если вы храните его в состоянии компонента.
Теперь в первом компоненте измените метод _renderItem, чтобы он соответствовал предварительным просмотрам, которые теперь представляют собой массив объектов:
_renderItem ({ item, index }) {
return (
<View>
<Image source={{uri: item.uri}}/>
<Text>{item.title}</Text>
</View>
);
}