Я использую библиотеку реагирующий-масонский компонент в моем проекте и столкнулся с проблемой, когда сетка не настраивалась сама, когда размеры элемента в сетке изменялись.Это привело бы к дублированию и общему разгильдяйству.Некоторый поиск в Google привел меня к решению.Создайте функцию обратного вызова в состоянии компонента и затем установите ref компонента равным следующей функции обратного вызова.Рассматриваемая функция обратного вызова ниже:
function(c) {this.masonry = c.masonry;}.bind(this)
Благодаря этому я смог добавить следующую строку в функцию, которая изменяет размеры элементов, и теперь сетка кладки работает как шарм:
this.masonry.layout();
Однако это привело к новой проблеме.Теперь, когда я ухожу от компонента, я получаю следующее исключение:
TypeError: Cannot read property 'masonry' of null
Таким образом, мой компонент размонтируется и пытается установить свою переменную состояния равной свойству, которого больше не существует, поскольку он размонтируется / размонтирован.
Самое простое решение, которое я могу придумать, - это добавить какое-то условие, в котором функция будет заключена в нечто вроде:
if (c !== null) { execute function }
Однако я не совсем понимаю синтаксис /что происходит в первоначальном обратном вызове, любые мои попытки вмешаться в него до сих пор полностью сломали его.
Так что мой вопрос действительно состоит из двух частей, во-первых, что на самом деле происходит в строке кода
function(c) {this.masonry = c.masonry;}.bind(this)
Во-вторых, есть ли способ изменить это поведение, чтобы больше не выдавать исключение при размонтировании компонента?
Спасибо