mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
af9214b302
The mobx-state-tree examples (with and without typescript) pre-dated the next _app class and needed to be updated to use _app for persisting state across client-side navigation transitions. Also removed unneeded custom server class to better keep with the "show one feature per example" style of the next examples folder
51 lines
1,011 B
TypeScript
51 lines
1,011 B
TypeScript
import { inject, observer } from "mobx-react";
|
|
import Link from "next/link";
|
|
import React from "react";
|
|
import { IStore } from "../stores/store";
|
|
import { Clock } from "./Clock";
|
|
|
|
interface IOwnProps {
|
|
store?:IStore;
|
|
title:string;
|
|
linkTo:string;
|
|
}
|
|
|
|
@inject("store")
|
|
@observer
|
|
class SampleComponent extends React.Component<IOwnProps> {
|
|
public componentDidMount () {
|
|
if (!this.props.store) {
|
|
return;
|
|
}
|
|
this.props.store.start();
|
|
}
|
|
|
|
public componentWillUnmount () {
|
|
if (!this.props.store) {
|
|
return;
|
|
}
|
|
this.props.store.stop();
|
|
}
|
|
|
|
public render () {
|
|
if (!this.props.store) {
|
|
return (
|
|
<div>
|
|
Store not defined
|
|
</div>
|
|
);
|
|
}
|
|
return (
|
|
<div>
|
|
<h1>{this.props.title}</h1>
|
|
<Clock lastUpdate={this.props.store.lastUpdate} light={this.props.store.light} />
|
|
<nav>
|
|
<Link href={this.props.linkTo}><a>Navigate</a></Link>
|
|
</nav>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
export { SampleComponent };
|