reactant-ssr v0.137.0
reactant-ssr
SSR (Server-Side Rendering) can greatly improve the first rendering time, the most popular React SSR framework is Next.js. Currently, Reactant has supported SSR based on Next.js.
Installation
- Build a Next.js application project using the
create-next-appcli.
npx create-next-app reactant-ts-ssr --ts
cd reactant-ts-ssr- Install
reactant-ssr.
yarn add reactant-ssr- Install other
Babeldevelopment dependencies.
yarn add -D @babel/core @babel/plugin-proposal-class-properties @babel/plugin-proposal-decorators babel-plugin-parameter-decorator babel-plugin-transform-typescript-metadataConfiguration
- Next.js with Typescript should use
babel, and make sure you set:
Add .babelrc file
{
"presets": ["next/babel"],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": false }],
"babel-plugin-parameter-decorator",
"babel-plugin-transform-typescript-metadata"
]
}Add this config to tsconfig.json file
+ "experimentalDecorators": true,
+ "emitDecoratorMetadata": trueUsage
- Define a module file for SSR
src/index.tsx:
import React from 'react';
import {
ViewModule,
injectable,
useConnector,
action,
state,
} from 'reactant-ssr';
@injectable()
export class Counter {
@state
count = 0;
@action
increase() {
this.count += 1;
}
@action
decrease() {
this.count -= 1;
}
}
@injectable()
export class CounterView extends ViewModule {
constructor(public counter: Counter) {
super();
}
component() {
const count = useConnector(() => this.counter.count);
return (
<>
<button type="button" onClick={() => this.counter.decrease()}>
-
</button>
<div>{count}</div>
<button type="button" onClick={() => this.counter.increase()}>
+
</button>
</>
);
}
}- Add custom Next.js app in
pages/_app.tsxfile.
import { createServerApp } from "reactant-ssr";
import { CounterView } from "../src/index";
export const app = createServerApp({
modules: [CounterView],
});
export default app.bootstrap;- Add home page routing page in
pages/index.tsxfile.
import { CounterView } from "../src/index";
import { app } from "./_app";
export default app.container.get(CounterView).component;- run
yarn devand visithttp://localhost:3000.
Q&A
- Does
reactant-routersupport SSR?
reactant-router is based on React Router, which does not support SSR, so when you use reactant-ssr, your routing must usenext/router
- Does
reactant-storagesupport SSR?
Yes, it works perfectly fine. In general, reactant-share is a different application model, so it also does not support SSR, which is supported by all other Reactant libraries.
Example
Documentation
You can visit reactant.js.org for more documentation.
11 months ago
11 months ago
1 year ago
11 months ago
11 months ago
11 months ago
12 months ago
1 year ago
11 months ago
11 months ago
12 months ago
1 year ago
11 months ago
11 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago