Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // first example
  2.  
  3. @observer
  4. export class ReactMobxExample extends React.Component {
  5.     componentDidMount() {
  6.         // could be async await but this is not part of this article
  7.         askSomethingFromBackend().then(this.setSomething);
  8.     }
  9.  
  10.     render() {
  11.         return <div>
  12.             {this.state.something}
  13.             <button onClick={this.reset}></button>
  14.         </div>;
  15.     }
  16.     @action.bound
  17.     reset() {
  18.         this.setSomething(0);
  19.     }
  20.  
  21.     @action.bound
  22.     setSomething(value) {
  23.         this.something = value;
  24.     }
  25. }
  26.  
  27. // second example
  28. class SomethingModel {
  29.  
  30.     @observable something = 0;
  31.  
  32.     @action.bound  
  33.     reset() {  
  34.         this.setSomething(0);
  35.     }
  36.  
  37.     @action.bound
  38.     setSomething(value) {
  39.         this.something = value;
  40.     }
  41.  
  42.     update() {
  43.         askSomethingFromBackend().then(this.setSomething);
  44.     }
  45. }
  46. // one easier way to make singleton
  47.  
  48. export const SomethingStore = new SomethingModel();
  49.  
  50. @observer
  51. export class ReactMobxExample extends React.Component {
  52.  
  53. componentDidMount() {
  54.    SomethingStore.update();
  55. }
  56.  
  57. render() {
  58.    return <div>
  59.    {SomethingStore.something}
  60.       <button onClick={SomethingStore.reset}></button>
  61.    </div>;
  62.    }
  63. }
  64.  
  65. const ReactExample = observer(() => {
  66.  
  67.             // component did mount in functional react
  68.  
  69. useEffect(() => SomethingStore.update(), []);
  70.  
  71. return <div>
  72.  
  73. {SomethingStore.something}  
  74.  
  75. <button onClick={SomethingStore.reset}></button>  
  76.  
  77. </div>;
  78.  
  79. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement