浅比较:

js 一切皆hashmap,浅比较比较的是对象的hash值,也就是对象的引用地址,

当属性的引用地址一样时,则认为是相等


深比较:

更严谨的比较,会比较两者的值

如果某个属性引用的对象是同一个对象,则这个属性的值肯定一样

如果某个属性引用的对象不是同一个对象,那么继续比较这个对象的值,如果一样,则认为是相等

/**
 * 
 * @param {props || state} objA 
 * @param {nextProps || nextState} objB 
 */
var address = [10, 20]
var a = {
    name: 'jack',
    age: 25,
    address: address
}
var b = {
    name: 'jack',
    age: 25,
    address: address
}

//浅比较,认为上述两个对象是相同的
//深比较,认为上述两个对象是相同的

var c = {
    name: 'jack',
    age: 25,
    address: [10, 20]
}
var d = {
    name: 'jack',
    age: 25,
    address: [10, 20]
}

//浅比较,认为上述两个对象是不相同的
//深比较,认为上述两个对象是相同的


问:如果在React的组件的Props中传入一个对象,当对象的值变动时,会不会刷组件?

答:不会,因为对象的引用地址无变动


参考:

https://juejin.cn/post/6854573214417944584