Прежде всего, вы не должны вызывать this.getUserTasks () в методе рендеринга, потому что функция имеет this.setState, который является плохим и может закончиться бесконечным циклом, я думаю или, по крайней мере, повлиять на худшую производительность. Вместо этого вы можете вызвать его в componentDidMount:
componentDidMount = () => {
this.getUserTasks();
}
Или, альтернативно, вызовите уже в конструкторе, но я предпочитаю первый вариант:
constructor(props){
super(props);
this.state = {
noteArray: [],
noteText: '',
dueDate: ''
};
this.getUserTasks()
}
this.props.noteArray.push ({.., вероятно, не определено, потому что вы не передаете его где-либо. (Я не видел ссылки в вашем фрагменте). Думаю, я бы реализовал функцию saveEdit в Компонент Main.js и просто передайте его по маршруту навигации и вызовите функцию в компоненте Details, открыв реквизиты состояния навигации:
Обновление
goToNoteDetail=(key)=>{
this.props.navigation.navigate('DetailsScreen', {
// selectedTask: this.state.noteArray[key],
selectedItem: key,
saveEdit: this.saveEdit
});
}
saveEdit(selectedItem){
const selectedTask = this.state.noteArray[selectedItem]
this.state.noteArray.push({
'creationDate': selectedTask['creationDate'],
'taskName': selectedTask['taskName'],
'dueDate': this.state.dueData
});
this.setState({noteArray:this.state.noteArray})
this.setState({dueData: 'YYYY/MM/DD'});
this.saveUserTasks(this.state.noteArray)
}
А затем вызвать saveEdit в компоненте Details:
saveSelectedItem = () => {
const { navigation } = this.props.navigation;
const {selectedItem, saveEdit} = navigation.state && navigation.state.params;
saveEdit(selectedItem)
}