Как теряется контекст в классовых компонентах, и как помогает bind?
Внутри функции может потеряться контекст в зависимости от того, как она вызвана.// вызов
obj.foo();
// и вызов
const bar =  obj.foo;
bar();
// оба вызывают foo, но во втором случае this внутри foo будет привязан не к obj, 
// а к глобальному объекту
Таким образом, если мы хотим передать функцию куда-то с определенным контекстом, нам ее надо привязывать. Второй момент, что класс это просто синтаксический сахар, а на самом деле это просто функция, к которой this не привязывается. Таким образом, внутри класса, метод не будет понимать куда вы обращаетесь без привязки.
Внутри функции может потеряться контекст в зависимости от того, как она вызвана.// вызов
obj.foo();
// и вызов
const bar =  obj.foo;
bar();
// оба вызывают foo, но во втором случае this внутри foo будет привязан не к obj, 
// а к глобальному объекту
Таким образом, если мы хотим передать функцию куда-то с определенным контекстом, нам ее надо привязывать. Второй момент, что класс это просто синтаксический сахар, а на самом деле это просто функция, к которой this не привязывается. Таким образом, внутри класса, метод не будет понимать куда вы обращаетесь без привязки.