UNPKG

2.04 kBMarkdownView Raw
1## How to use
2### Component
3```js
4import { VanillaRenderer, Renderer } from "@egjs/infinitegrid";
5
6// Use VanillaRenderer or Renderer
7
8// Component
9class Component {
10 constructor(renderer: Renderer) {
11 this.renderer = renderer;
12 }
13 // Sync items and elements
14 render(items) {
15 this.renderer.render(items);
16 }
17
18 // Force update if you want to show only part of it internally
19 update() {
20 // If true is returned, the update event is not called. (for vanilla)
21 // If false is returned, the update event is called. (for framework)
22 if (this.renderer.update()) {
23 // vanilla
24 this.render();
25 }
26 }
27
28 // set renderer container for vanilla
29 setContainer(container) {
30 this.renderer.setContainer(container);
31 }
32}
33
34```
35### Vanilla
36```js
37const component = new Component(new VanillaRenderer());
38
39// render item with element
40component.render([
41 { key: 1, element: element1 },
42 { key: 2, element: element2 },
43 { key: 3, element: element3 },
44]);
45
46
47component.update();
48```
49
50### Framework
51```jsx
52import * as React from "react";
53import { Renderer } from "@egjs/infinitegrid";
54
55class ReactComponent extends React.Component {
56 containerRef = React.createRef();
57 render() {
58 const items = [
59 { key: 1 },
60 { key: 2 },
61 { key: 3 },
62 ];
63 // render only items
64 this.component?.render(items);
65 return <div ref={this.containerRef} onClick={() => {
66 this.component.update();
67 }}>
68 {items.map((item) => (<div key={item.key}>{item.key}</div>))}
69 </div>;
70 }
71 componentDidUpdate() {
72 // update elements in items
73 this.renderer.updated(this.containerRef.current!.children);
74 }
75 componentDidMount() {
76 const renderer = new Renderer();
77 const component = new Component(renderer);
78
79 this.renderer = renderer;
80 this.component = component;
81
82 component.render([
83 { key: 1 },
84 { key: 2 },
85 { key: 3 },
86 ]);
87 renderer.updated(this.containerRef.current!.children);
88 renderer.on("update", () => {
89 this.forceUpdate();
90 });
91 }
92}
93```
94