我是React框架的新手,並開始使用它。我讀到它有一個很好的差異算法。我想知道是否可以將它用在我的一個物體上?然後再次運行它,並通過oldValue和newValue獲取添加/刪除/更改的結果對象?反應,用它來區分對象
感謝團隊
我是React框架的新手,並開始使用它。我讀到它有一個很好的差異算法。我想知道是否可以將它用在我的一個物體上?然後再次運行它,並通過oldValue和newValue獲取添加/刪除/更改的結果對象?反應,用它來區分對象
感謝團隊
陣營本身不暴露其版本比較算法,因爲它緊密地與虛擬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 }
]
我能夠做的比較淺像這樣:
你必須使用反應與 - addons.js。
然後使用React.addons.shallowCompare
函數。
第一個參數必須是帶有兩個鍵的對象,props
和state
。然後第二個參數是與第一個參數中的props
鍵比較的對象。第三個參數是與第一個參數中的state
鍵比較的對象。所以,如果你想使用這個陣營範圍之外只是忽略第三個參數,並做到這一點:
var isDifferent = React.addons.shallowCompare({props:{a:1}}, {a:2});
這將返回true
爲a
在左1
和右2
。
var isDifferent = React.addons.shallowCompare({props:{a:1}}, {a:1});
這將返回false
,因爲它們都相同。
Aw darn我希望React擁有一切。感謝您的優秀回答! – Noitidart