onClick={this.add("New Note")}
немедленно запустит метод add()
, а затем установит результат как onClick
.Результат add()
не определен, потому что он ничего не возвращает.Таким образом, мы бы по существу сделали onClick={undefined}
.
. Чтобы исправить это, мы можем использовать анонимную функцию: onClick={() => this.add("New Note")}
На этот раз программа правильно вызывает this.add("New Note")
при нажатии кнопки.
Или мы можем просто воспользоваться тем фактом, что bind()
позволяет нам указывать контекст this
и аргументы, которые мы хотим передать, и просто использовать onClick={this.add.bind(this, "New Note")}
(используя this
в качестве первого аргументапривязывает экземпляр как контекст, как функция стрелки во втором абзаце)