React
浅比较:
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中传入一个对象,当对象的值变动时,会不会刷组件?
答:不会,因为对象的引用地址无变动
参考: