0.4.0-alpha.47 • Published 2 years ago

@parataxic/gatsby-lazy-pagedata v0.4.0-alpha.47

Weekly downloads
6
License
MIT
Repository
github
Last release
2 years ago

What does it do

Allows lazy loading data in gatsby for client-side component loading

How?

In gatsby-node.js, during createPages, a you slip in a createJSON (included) before createPage, this will register the same path as the page, but prepended with .json, and include all the context data for the component.

e.g.

const pageData = {
  // @ts-ignore: Not sure waht this is
  path: `/who/${psychologist.id}`,
  // This component will wrap our MDX content
  component: `path/to/your/template.tsx`,
  // We can use the values in this context in
  // our page layout component
  context: { mdx, psychologist },
};

await createJSON(pageData); // data for your component (you can customize and tweak this if needed)
return createPage(pageData);

Usage case

You can use the created /normal/page.json file (assuming a page at /normal/page) however you'd like.

In my use case, it's used to fetch popover information based on other objects in the gatsby store.

Pros / Cons

Pros:

  • Works with SSR

    Lets you have all the benefits of client side loading / lazy components

  • Keeps pages lite and simpler

    No need to pull asset information for popups / popover / hover content or other stuff in your initial request.

  • Creates a new JSON file with every page The json for the file can be customized to include:

    • Less data: Only pass the amount of data your components need to preview / do whatever it needs to do when working with createJSON. Don't want to include all the mdx stuff? Don't pass it.

    • Pass additional data: Add additional contextual information not necessary to include in your createPage

Cons

  • Creates a redundant file. page-data.json has the data also. Future versions may give the option to fetch from page-data.json since those are often pre-cached.
  • Not using page-data.json eliminates possibility of a lazy-loaded component also being able to preload the target page

Other methods

Utilize page-data.json. Future versions may try this.

This would prevent duplication, but the results for this wouldn't be adjustable.

Also, the location of page-data.json is consistent enough to pull via fetch without additional specialized logic.

0.4.0-alpha.47

2 years ago

0.4.0-alpha.44

2 years ago

0.4.0-alpha.45

2 years ago

0.4.0-alpha.43

2 years ago

0.4.0-alpha.36

3 years ago

0.4.0-alpha.37

3 years ago

0.4.0-alpha.38

3 years ago

0.4.0-alpha.35

3 years ago

0.4.0-alpha.30

3 years ago

0.4.0-alpha.28

3 years ago

0.4.0-alpha.27

3 years ago

0.4.0-alpha.26

3 years ago

0.4.0-alpha.25

3 years ago

0.4.0-alpha.23

3 years ago

0.4.0-alpha.17

3 years ago

0.4.0-alpha.15

3 years ago

0.4.0-alpha.14

3 years ago

0.4.0-alpha.13

3 years ago

0.4.0-alpha.11

3 years ago

0.4.0-alpha.10

3 years ago

0.4.0-alpha.9

3 years ago

0.4.0-alpha.8

3 years ago

0.4.0-alpha.1

3 years ago

0.4.0-alpha.5

3 years ago

0.3.9

3 years ago

0.3.8

3 years ago

0.3.7

3 years ago

0.3.6

3 years ago

0.3.5

3 years ago

0.3.2

3 years ago

0.3.4

3 years ago

0.3.3

3 years ago

0.3.1

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.1

4 years ago