class NoteEditor extends Component {
constructor(props) {
super(props);
this.state = {
text: ''
}
this.handleTextChange = this.handleTextChange.bind(this);
this.handleNoteAdd = this.handleNoteAdd.bind(this);
}
handleTextChange (event){
this.setState({
text: event.target.value
})
}
handleNoteAdd() {
let newNote = {
text: this.state.text,
color: 'yellow',
id: Date.now()
}
this.props.onNoteAdd(newNote);
this.setState({text: ''});
}
render() {
return(
<div className="note-editor">
<textarea placeholder="Enter your text here..."
className="textarea"
rows={2}
value={this.state.text}
onChange={this.handleTextChange}/>
<button className="add-button" onClick={this.handleNoteAdd}>Add</button>
</div>
)
}
}
export default class NotesApp extends Component {
constructor(props) {
super(props);
this.state = {
notes: [ тут массив заметок]
}
this.handleNoteAdd=this.handleNoteAdd.bind(this);
}
handleNoteAdd (newNote) {
let newNotes = this.state.notes.slice();
newNotes.unshift(newNote)
this.setState ({
notes: newNotes
})
}
render() {
return(
<div className="notes-app" style={{textAlign: "center"}}>
NotesApp
<NoteEditor onNoteAdd={this.handleNoteAdd}/>
<NotesGrid notes = {this.state.notes}/>
</div>
)
}
}
Почему есть строка this.props.onNoteAdd(newNote); а не this.props.handleNoteAdd(newNote)?
<NoteEditor onNoteAdd={this.handleNoteAdd}/>
-- эта строчка передаёт пропс с именем onNoteAdd , который вызывает функцию this.handleNoteAdd . Поэтому в компонент приходит пропс с названием onNoteAdd Всё. Можешь переименовать, если хочешь.