Почему есть строка this.props.onNoteAdd(newNote); а не this.props.handleNoteAdd(newNote)?
Сначала про это. Посмотри на вызов этого компонента.
<NoteEditor onNoteAdd={this.handleNoteAdd}/>
-- эта строчка передаёт пропс с именем onNoteAdd , который вызывает функцию this.handleNoteAdd . Поэтому в компонент приходит пропс с названием onNoteAdd Всё. Можешь переименовать, если хочешь.
Почему дублируется функция? Она не дублируется.
- Функция во вложенном компоненте "собирает" заметку. Ну, читает id, цвет, создаёт объект с этими параметрами и передаёт в функцию родителя. Собирать заметку лучше именно во вложенном компоненте, ибо текст заметки хранится в его стейте.
- Функция в родителе просто пушит новую заметку в массив уже созданных