Наличие обратного вызова ref в моем состоянии компонента вызывает ошибки, когда мой компонент отключается - PullRequest
0 голосов
/ 02 марта 2019

Я использую библиотеку реагирующий-масонский компонент в моем проекте и столкнулся с проблемой, когда сетка не настраивалась сама, когда размеры элемента в сетке изменялись.Это привело бы к дублированию и общему разгильдяйству.Некоторый поиск в 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)

Во-вторых, есть ли способ изменить это поведение, чтобы больше не выдавать исключение при размонтировании компонента?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...