1 | ## How to use
|
2 | ### Component
|
3 | ```js
|
4 | import { VanillaRenderer, Renderer } from "@egjs/infinitegrid";
|
5 |
|
6 | // Use VanillaRenderer or Renderer
|
7 |
|
8 | // Component
|
9 | class 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
|
37 | const component = new Component(new VanillaRenderer());
|
38 |
|
39 | // render item with element
|
40 | component.render([
|
41 | { key: 1, element: element1 },
|
42 | { key: 2, element: element2 },
|
43 | { key: 3, element: element3 },
|
44 | ]);
|
45 |
|
46 |
|
47 | component.update();
|
48 | ```
|
49 |
|
50 | ### Framework
|
51 | ```jsx
|
52 | import * as React from "react";
|
53 | import { Renderer } from "@egjs/infinitegrid";
|
54 |
|
55 | class 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 |
|