1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

respond to review comments

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2020-11-18 10:00:21 -05:00
parent 2b08d61070
commit 97ae34bad3

View File

@ -24,7 +24,7 @@ Further reading is available from `mobx`'s [website](https://mobx.js.org/the-gis
## Basic usage of mobx: ## Basic usage of mobx:
When using `Lens`'s extension's API, some of the provided types are marked as `observable` (or others) and are documented as such. When using `Lens`'s extension's API, some of the provided types are marked as `observable` and are documented as such.
These can be used as normal types and the combination of `mobx` and `react` work to determine when a rerender should occur. These can be used as normal types and the combination of `mobx` and `react` work to determine when a rerender should occur.
--- ---
@ -37,12 +37,15 @@ That could be achieved using roughly the following code:
```typescript ```typescript
import { LensMainExtension, MenuRegistration } from "@k8slens/extensions"; import { LensMainExtension, MenuRegistration } from "@k8slens/extensions";
import observables from "./observables" // a collection of observable data import observables from "./observables" // a collection of observable data
import { IReactionDisposer } from "mobx";
interface MenuRegistrationWithId extends MenuRegistration { interface MenuRegistrationWithId extends MenuRegistration {
id?: string; id?: string;
} }
export default class ExtensionMain extends LensMainExtension { export default class ExtensionMain extends LensMainExtension {
menuReactionDispose?: IReactionDisposer;
appMenus: MenuRegistrationWithId[] = [ appMenus: MenuRegistrationWithId[] = [
{ {
parentId: "file", parentId: "file",
@ -53,10 +56,8 @@ export default class ExtensionMain extends LensMainExtension {
}, },
]; ];
constructor() { onActivate() {
super() this.menuReactionDispose = reaction(
reaction(
() => observables.clusterIsInState, () => observables.clusterIsInState,
clusterIsInState => { clusterIsInState => {
if (clusterIsInState) { if (clusterIsInState) {
@ -74,5 +75,10 @@ export default class ExtensionMain extends LensMainExtension {
} }
) )
} }
onDeactivate() {
this.menuReactionDispose?.() // always clenaup mobx disposers
this.menuReactionDispose = undefined
}
} }
``` ```