mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add starting point for mobx related documentaion (#1422)
* add a brief overview to our use of mobx and mark all observable fields as observable in our docs * add to navigation Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
7a1812e34d
commit
1547142125
@ -19,10 +19,11 @@ Each guide or sample will include:
|
||||
| [Stores](stores.md) | |
|
||||
| [Components](components.md) | |
|
||||
| [KubeObjectListLayout](kube-object-list-layout.md) | |
|
||||
| [Working with mobx](working-with-mobx.md) | |
|
||||
|
||||
## Samples
|
||||
|
||||
| Sample | APIs |
|
||||
| ----- | ----- |
|
||||
[helloworld](https://github.com/lensapp/lens-extension-samples/tree/master/helloworld-sample) | LensMainExtension <br> LensRendererExtension <br> Component.Icon <br> Component.IconProps |
|
||||
[minikube](https://github.com/lensapp/lens-extension-samples/tree/master/minikube-sample) | LensMainExtension <br> Store.clusterStore <br> Store.workspaceStore |
|
||||
[minikube](https://github.com/lensapp/lens-extension-samples/tree/master/minikube-sample) | LensMainExtension <br> Store.clusterStore <br> Store.workspaceStore |
|
||||
|
||||
23
docs/extensions/guides/working-with-mobx.md
Normal file
23
docs/extensions/guides/working-with-mobx.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Working with mobx
|
||||
|
||||
## Introduction
|
||||
|
||||
Lens uses `mobx` as its state manager on top of React's state management system.
|
||||
This helps with having a more declarative style of managing state, as opposed to `React`'s native `setState` mechanism.
|
||||
You should already have a basic understanding of how `React` handles state ([read here](https://reactjs.org/docs/faq-state.html) for more information).
|
||||
However, if you do not, here is a quick overview.
|
||||
|
||||
- A `React.Component` is generic over both `Props` and `State` (with default empty object types).
|
||||
- `Props` should be considered read-only from the point of view of the component and is the mechanism for passing in "arguments" to a component.
|
||||
- `State` is a component's internal state and can be read by accessing the parent field `state`.
|
||||
- `State` **must** be updated using the `setState` parent method which merges the new data with the old state.
|
||||
- `React` does do some optimizations around re-rendering components after quick successions of `setState` calls.
|
||||
|
||||
## How mobx works:
|
||||
|
||||
`mobx` is a package that provides an abstraction over `React`'s state management. The three main concepts are:
|
||||
- `observable`: data stored in the component's `state`
|
||||
- `action`: a function that modifies any `observable` data
|
||||
- `computed`: data that is derived from `observable` data but is not actually stored. Think of this as computing `isEmpty` vs an `observable` field called `count`.
|
||||
|
||||
Further reading is available from `mobx`'s [website](https://mobx.js.org/the-gist-of-mobx.html).
|
||||
@ -33,6 +33,7 @@ nav:
|
||||
- Main Extension: extensions/guides/main-extension.md
|
||||
- Renderer Extension: extensions/guides/renderer-extension.md
|
||||
- Generator: extensions/guides/generator.md
|
||||
- Working with mobx: extensions/guides/working-with-mobx.md
|
||||
- Testing and Publishing:
|
||||
- Testing Extensions: extensions/testing-and-publishing/testing.md
|
||||
- Publishing Extensions: extensions/testing-and-publishing/publishing.md
|
||||
|
||||
Loading…
Reference in New Issue
Block a user