Skip to content

Commit 48a3d00

Browse files
authored
Next without ssr (#52)
* Next.js hook now can also receive a query on server side, which will only be executed on client side * Add no ssr example for next.js * Improve dependencies
1 parent 2fb367d commit 48a3d00

File tree

21 files changed

+37658
-33504
lines changed

21 files changed

+37658
-33504
lines changed

examples/backend-todo/package-lock.json

+1,259-5,264
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/backend-todo/package.json

+3-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
"dev": "npm run start"
1010
},
1111
"devDependencies": {
12-
"mongodb-runner": "^4.8.0",
13-
"parse-dashboard": "^2.1.0",
14-
"parse-server": "^4.10.4"
12+
"mongodb-runner": "4.8.3",
13+
"parse-dashboard": "3.2.1"
1514
}
16-
}
15+
}

examples/next-ts-todo/next-env.d.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
/// <reference types="next" />
22
/// <reference types="next/types/global" />
3+
/// <reference types="next/image-types/global" />
4+
5+
// NOTE: This file should not be edited
6+
// see https://nextjs.org/docs/basic-features/typescript for more information.

examples/next-ts-todo/package-lock.json

+2,314-2,292
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/next-ts-todo/package.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@
1010
"start": "next start -p 3031"
1111
},
1212
"dependencies": {
13-
"@parse/react-ssr": "^0.0.1-alpha.8",
14-
"bootstrap": "^4.5.3",
15-
"jquery": "^3.5.1",
16-
"next": "11.1.1",
17-
"parse": "^2.18.0",
18-
"popper.js": "^1.16.1",
19-
"react": "17.0.1",
20-
"react-dom": "17.0.1",
21-
"tslib": "^2.0.3"
13+
"@parse/react-ssr": "0.0.1-alpha.14",
14+
"bootstrap": "4.6.0",
15+
"jquery": "3.6.0",
16+
"next": "11.1.2",
17+
"parse": "3.3.1",
18+
"popper.js": "1.16.1",
19+
"react": "17.0.2",
20+
"react-dom": "17.0.2",
21+
"tslib": "2.3.1"
2222
},
2323
"devDependencies": {
24-
"@types/react": "^16.9.56",
25-
"typescript": "^4.0.5",
26-
"watch": "^1.0.2"
24+
"@types/react": "17.0.29",
25+
"typescript": "4.4.4",
26+
"watch": "1.0.2"
2727
}
2828
}
+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import { useState, useEffect, useCallback } from 'react';
2+
import Head from 'next/head'
3+
import { initializeParse, encodeParseQuery, useParseQuery } from '@parse/react-ssr';
4+
5+
initializeParse(
6+
'http://localhost:1337/parse',
7+
'APPLICATION_ID',
8+
'JAVASCRIPT_KEY'
9+
);
10+
11+
const createParseQuery = hideDone => {
12+
const parseQuery = new Parse.Query('Todo');
13+
14+
if (hideDone) {
15+
parseQuery.notEqualTo('done', true);
16+
}
17+
18+
(parseQuery as any).withCount();
19+
20+
return parseQuery;
21+
};
22+
23+
export default function Home() {
24+
const [
25+
{
26+
hideDone,
27+
parseQuery
28+
},
29+
setParseQueryState
30+
] = useState({
31+
hideDone: false,
32+
parseQuery: createParseQuery(false)
33+
});
34+
35+
const toggleHideDone = useCallback(
36+
() => {
37+
setParseQueryState({
38+
hideDone: !hideDone,
39+
parseQuery: createParseQuery(!hideDone)
40+
});
41+
},
42+
[hideDone]
43+
);
44+
45+
const {
46+
isLive,
47+
isLoading,
48+
isSyncing,
49+
results,
50+
count,
51+
error,
52+
reload
53+
} = useParseQuery(parseQuery);
54+
55+
return (
56+
<>
57+
<Head>
58+
<title>Todo Example using @parse/ssr on Next.js (Typescript)</title>
59+
<link rel="icon" href="/favicon-32x32.png" />
60+
</Head>
61+
<button onClick={toggleHideDone}>
62+
{hideDone ? 'Unhide' : 'Hide'} done todos
63+
</button>
64+
{isLoading && (
65+
<p>Loading...</p>
66+
)}
67+
{isLive && (
68+
<p>Live!</p>
69+
)}
70+
{isSyncing && (
71+
<p>Syncing...</p>
72+
)}
73+
{results && (
74+
<ul>
75+
{results.map(result => (
76+
<li key={result.id}>
77+
{result.get('title')}
78+
</li>
79+
))}
80+
</ul>
81+
)}
82+
<p>{count}</p>
83+
{error && (
84+
<p>{error.message}</p>
85+
)}
86+
<button
87+
onClick={reload}
88+
>
89+
Reload
90+
</button>
91+
</>
92+
);
93+
};

0 commit comments

Comments
 (0)