1.2.22 • Published 4 months ago
react-diff-viz v1.2.22
react-diff-viz
react-diff-viz is a React component that compares and renders complex object differences
Install
npm install react-diff-viz
Usage
import Diff from "react-diff-viz";
// describe the content to be rendered
const vizItems = [
{
path: "name",
label: "name",
},
{
path: "age",
label: "age",
},
{
path: "address",
label: "address",
content: (v) => {
return v.city + " of " + v.country;
},
},
]
// diff data1 and data2 ,then render
<Diff
data1={{
name: "John",
age: 30,
address: {
city: "New York",
country: "USA",
},
}}
data2={{
name: "John",
age: 31,
address: {
city: "New York",
country: "USA",
},
}}
vizItems={vizItems}
/>;
Features
This component integrates diff algorithm and visual rendering, features are as follows
- The left and right columns display the data, aligned to the height of corresponding field, and colored the different fields
- The component comes with the diff function. You can customize the diff function for fields
- The component has its own rendering function. You can customize rendering functions for fields
- Supports comparison of nested objects and arrays
Dependencies
- react (peer dependency)
- react-dom (peer dependency)
- lodash (peer dependency)
Demo
https://littlewhite-hai.github.io/react-diff-viz/
API
Diff Component API
Name | Type | Description |
---|---|---|
data1(required) | any | Data used for comparison (usually the original data) |
data2(required) | any | Data used for comparison (usually the new data) |
vizItems(required) | Array\<VizItem> | Describes the data to be rendered, including diff method and rendering method |
colStyle | CSSProperties | Overall style for the outer DOM of all data1 and data2 |
labelStyle | CSSProperties | Style for the label of each data item |
contentStyle | CSSProperties | Style for the content of each data item |
strictMode | boolean | Strict mode, enabled by default. When disabled, the diff algorithm ignores data type differences, e.g., 0=null=undefined=false |
singleMode | boolean | Only view data2, default false |
refreshKey | number | Change this key to trigger recoloring and height alignment |
VizItems API
Name | Type | Description |
---|---|---|
label | string | Title of the data, if only label is provided, it renders a separator title |
path | string | Data path of the data |
visible | boolean | If false, the item will not be displayed |
foldable(coming soon) | boolean | Whether it can be folded |
isEqual | (v1,v2)=>boolean | Customize the data diff algorithm |
content | (v,ext)=>ReactNode | Customize the data rendering method |
arrayKey | string | Key for arrays, used to mark this data as array type |
arrayAlignType | "lcs" | "data2" | "none" | Array alignment method, default is longest common subsequence (lcs) alignment |
License
MIT
1.2.18
8 months ago
1.2.19
8 months ago
1.2.20
8 months ago
1.2.21
5 months ago
1.2.22
4 months ago
1.2.12
8 months ago
1.2.13
8 months ago
1.2.11
8 months ago
1.2.16
8 months ago
1.2.17
8 months ago
1.2.14
8 months ago
1.2.15
8 months ago
1.2.10
9 months ago
1.2.9
9 months ago
1.2.0
9 months ago
1.2.8
9 months ago
1.2.7
9 months ago
1.2.6
9 months ago
1.1.7
9 months ago
1.2.5
9 months ago
1.2.4
9 months ago
1.2.3
9 months ago
1.2.2
9 months ago
1.2.1
9 months ago
1.1.6
9 months ago
1.1.5
9 months ago
1.1.4
9 months ago
1.1.3
9 months ago
1.1.2
9 months ago
1.1.1
9 months ago
1.0.0
9 months ago