я чего то не знаю?
Ну если он методом его определил а не стрелкой, тогда нужно
То есть можно было сделать стрелочную функцию и проблема решена ?
Бон апети
это делают для того чтобы ссылка на функцию не менялась, для оптимизации, об этом в доке к реакту написано
у Реакта достаточно посредственная дока. Неудевительно, что я это пропустил.
https://ru.reactjs.org/docs/handling-events.html
Что-то не так?
Где по вашей ссылке написано что биндить контекст - это для оптимизаций?
Тут речь про onClick={this.handleClick} Vs onClick={() => this.handleClick()} И что бы корректно использовать первый способ, который не передаёт на каждый рендер новый колбек, нужно байндить контекст хендлклику. Но байндят не для перфоманса, а для того что б ссылка на экземпляр не потерялась внутри метода
Почему тогда просто не используют такую запись? onClick={() => this.handleClick()} Ну чтоб this не терялся?
методы создаются не только что пропами передавать или в обработчики навешивать
Не понял, ответ, извини
https://codesandbox.io/s/suspicious-perlman-hrl5i?file=/src/App.js Тут сломана логика если не прибиндить контекст. Тут его нужно для перфоманса прибивать? Нет. А значит нельзя говорить что bind в конструкторе для перфоманса. Это действие яляется часным случаем, который косвенно связан с оптимизацией
В таймауте достаточно сделать setTimeout(()=>this.handleClick(), 200);. В таймауте не обязательно передавать одну и туже ссылку на функцию. Но в реакте почему-то именно связывают(bind) контекcт конструкторе. Ответ - поддержание ссылочной целостности.
"поддержание ссылочной целостности." - с этого и нужно было начинать а с "перфоманса"
Просто ответь мне на вопрос, почему в реакте именно связывают ссылки в конструкторе, а не делают через колбэк <A onClick={()=>this.hadle()} /> ?
Обсуждают сегодня