Skip to content

Instantly share code, notes, and snippets.

View webmasterdevlin's full-sized avatar

Devlin Duldulao webmasterdevlin

View GitHub Profile
@webmasterdevlin
webmasterdevlin / Heroes.tsx
Last active March 13, 2019 16:02
React Class Component : src/pages/heroes/Heroes.tsx
import * as React from "react";
import { inject, observer } from "mobx-react";
import HeroStore from "./../../stores/HeroStore";
import { HeroModel } from "../../models/hero.model";
import { Link } from "react-router-dom";
import { toJS } from "mobx";
import NewItemForm from "../../common-components/NewItemForm";
export interface Props {
HeroStore: typeof HeroStore;
@webmasterdevlin
webmasterdevlin / HeroStore.ts
Last active March 13, 2019 14:25
MST Store : src/stores/HeroStore.ts
import { types, flow, applySnapshot, onPatch, destroy } from "mobx-state-tree";
import {
addHero,
getHero,
getHeroes,
removeHero,
updateHero
} from "./HeroService";
import makeInspectable from "mobx-devtools-mst"; // Mobx State Tree dev tools
@webmasterdevlin
webmasterdevlin / router.tsx
Last active March 13, 2019 17:15
React Router : src/router.tsx
import React from "react";
import { Redirect, Route, Switch } from "react-router";
import Heroes from "./pages/heroes/Heroes";
import EditHero from "./pages/heroes/EditHero";
import Villains from "./pages/villains/Villains";
import EditVillain from "./pages/villains/EditVillain";
import createBrowserHistory from "history/createBrowserHistory";
import { RouterStore, syncHistoryWithStore } from "mobx-react-router";
import heroStore from "./stores/hero.store";
@webmasterdevlin
webmasterdevlin / router.tsx
Created March 13, 2019 09:38
React Router : src/router.tsx
import React from "react";
import { Redirect, Route, Switch } from "react-router";
import Heroes from "./pages/heroes/Heroes";
import EditHero from "./pages/heroes/EditHero";
import Villains from "./pages/villains/Villains";
import EditVillain from "./pages/villains/EditVillain";
import createBrowserHistory from "history/createBrowserHistory";
import { RouterStore, syncHistoryWithStore } from "mobx-react-router";
import heroStore from "./stores/hero.store";
@webmasterdevlin
webmasterdevlin / Heroes.tsx
Last active March 13, 2019 15:58
React Class Component : src/pages/heroes/Heroes.tsx
import * as React from "react";
import { Hero } from "../../models/hero";
import NewItemForm from "../../common-components/NewItemForm";
import heroStore from "./../../stores/hero.store";
import { NavLink, Link } from "react-router-dom";
import { inject, observer } from "mobx-react";
import { toJS } from "mobx";
import { render } from "react-dom";
@webmasterdevlin
webmasterdevlin / hero.store.ts
Last active March 13, 2019 09:04
Mobx Store : src/stores/hero.store.ts
import { decorate, observable, action } from "mobx";
import { Hero } from "../models/hero";
import {
addHero,
getHero,
getHeroes,
removeHero,
updateHero
} from "./hero-service";
@webmasterdevlin
webmasterdevlin / Heroes.vue
Last active March 13, 2019 04:47
Using mapGetters and mapActions in a Vue Component : src/views/Heroes.vue
<template>
<div class="container-fluid">
<NewItemForm
:isShowNewItemForm="isShowNewItemForm"
:newItem="newItem"
@handleSubmit="onSubmit"
@handleShowNewItemForm="showNewItemForm"
@handleCancelForm="cancelForm"
></NewItemForm>
@webmasterdevlin
webmasterdevlin / getters.js
Created March 13, 2019 03:44
Vuex Getters : src/store/modules/heroes/getters.js
import * as types from "../../types";
const getters = {
[types.GETTERS_INIT_HEROES]: state => state.heroes, // retrieves the current heroes array from the state
[types.GETTERS_INIT_HERO]: state => state.hero // retrieves the current hero object from the state
};
export default getters;
@webmasterdevlin
webmasterdevlin / index.js
Created March 13, 2019 03:37
Vuex Store : src/store/index.js
import Vue from "vue"; // The Vue library
import Vuex from "vuex"; // The Vuex library
import heroes from "./modules/heroes"; // heroes module
import villains from "./modules/villains"; // villains is another module
Vue.use(Vuex); // using Vuex
export default new Vuex.Store({
modules: {
@webmasterdevlin
webmasterdevlin / state.js
Last active March 13, 2019 02:43
Vuex State : src/store/modules/heroes/state.js
const state = {
heroes: [], // this heroes array must be initialized with and empty array.
hero: {} // this hero object must be initialized with and empty object.
};
export default state;