Я использую 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
.