компоненте нужно прописывать в конструкторе this.setSomething = this.setSomething.bind(this) из-за того, что в объекте, сгенерированном JSX-ом, присвоится this этого самого объекта а метода setSomething нет и, следовательно, ничего не произойдет?
можно вместо bind использовать callback
откуда вы это берёте?
пытаюсь понять, как это работает
нет, мне интересно, где вы это прочитали
На Learjavascript про this почитайте, чтоб понять для чего это
соль в том, что в жс нет методов в привычном смысле слова, а то, что называют методами, на самом деле свойства поэтому this при вызове такой функции может указывать на самые разные сущности чтобы такого не происходило, к обработчику применяют bind, чтобы сохранить правильный this в замыкании
про this на learn.javascript написано, что это "то, что до точки", bind задает контекст выполнения функции. this.setSomething (какой-то метод у компонента) = this.setSomething.bind(this) задает контекст выполнения метода именно к инстансу компонента. Всё так?
всё так. Но это вы щас там прочитали. А до этого где взяли?
Я все это прочитал до того, как задать вопрос. После этого я предположил, что контекст теряется, когда мы в <button onClick={this.setSomething}></button> пишем, потому что button – это объект, которому, по моему предположению, и присвоился setSomething
Прочитайте про стрелочные функции ещё
но я пока их нигде не использовал
правильно, в принципе
ну вот зря. с ними никаких байндов не нужно
с функциональными компонентами тоже, но мне просто хочется разобраться, поэтому я и спросил.
Понял или обьяснить ещё раз?
тогда да, всё правильно. Без привязки контекста он теряется
Обсуждают сегодня