lodash возвращает false для объекта, содержащего элементы JSX - PullRequest
0 голосов
/ 14 октября 2019

Я использую lodash isEqual функцию для проверки prevProps и newProps в componentWillReceiveProps.

if(!isEqual(this.props.data, newProps.data)) //code to be run with new data

При проверке выше всегда возвращается false, когдамой объект содержит JSX элемент. Кажется, что isEqual не может понять, что элементы JSX одинаковы. Из-за этого снижается производительность.

Я погуглил относительно этой проблемы, но не смог найти ничего полезного.

Примечание: data - массив объектов.

Примеры данных:

[{"type":"regular","id":"edd76f60-eb2f-11e9-bfd3-01322f05fe43","indicator":"53930-3-2"},
{"type":"regular 1","id":"fdd76f60-eb2f-11e9-bfd3-01322f05fe43","indicator":{$$typeof: Symbol(react.element), ...} }]

Когда я пытаюсь напечатать данные с JSON.stringify, выдается следующее сообщение об ошибке: Uncaught TypeError: Converting circular structure to JSON --> starting at object with constructor 'ReactCompositeComponentWrapper' | property '_instance' -> object with constructor 'StatelessComponent' --- property '_reactInternalInstance' closes the circle at JSON.stringify (<anonymous>) at <anonymous>:1:6.

Я не знаю, но я думаю, circular structureпричина, по которой он возвращается false.

1 Ответ

0 голосов
/ 14 октября 2019
let firstObject = {"type":"regular","id":"edd76f60-eb2f-11e9-bfd3-01322f05fe43","indicator":"53930-3-2"};
let secondObject = {"type":"regular","id":"edd76f60-eb2f-11e9-bfd3-01322f05fe43","indicator":"53930-3-2"};
 
_.isEqual(firstObject, secondObject);
...