2015-12-06 30 views
2

我是React框架的新手,並開始使用它。我讀到它有一個很好的差異算法。我想知道是否可以將它用在我的一個物體上?然後再次運行它,並通過oldValue和newValue獲取添加/刪除/更改的結果對象?反應,用它來區分對象

感謝團隊

回答

4

陣營本身不暴露其版本比較算法,因爲它緊密地與虛擬DOM實現集成。

但是,有獨立的NPM模塊將完全按照您的要求進行操作。例如,請查看flitbit/diff

var diff = require('deep-diff'); 

var lhs = { a: 1, b: 2, c: 3 }; 
var rhs = { a: 1, b: 4, d: 5 }; 

var changes = diff(lhs, rhs); 

// changes are 
[ 
    { kind: 'E', path: [ 'b' ], lhs: 2, rhs: 4 }, 
    { kind: 'D', path: [ 'c' ] }, 
    { kind: 'N', path: [ 'd' ], rhs: 5 } 
] 
+0

Aw darn我希望React擁有一切。感謝您的優秀回答! – Noitidart

0

我能夠做的比較淺像這樣:

你必須使用反應與 - addons.js。

然後使用React.addons.shallowCompare函數。

第一個參數必須是帶有兩個鍵的對象,propsstate。然後第二個參數是與第一個參數中的props鍵比較的對象。第三個參數是與第一個參數中的state鍵比較的對象。所以,如果你想使用這個陣營範圍之外只是忽略第三個參數,並做到這一點:

var isDifferent = React.addons.shallowCompare({props:{a:1}}, {a:2}); 

這將返回truea在左1和右2

var isDifferent = React.addons.shallowCompare({props:{a:1}}, {a:1}); 

這將返回false,因爲它們都相同。