Skip to main content

Combine Redux and RxJS with pure html to understand how you can mix both and solve problem in a different way

full link->https://stackblitz.com/edit/typescript-u8ub9q?file=index.ts

html part----->

--------------------
<div id="app">
<input type="text" id="totalValue" value=":)"><br><br>
<input type="button" value="ADD NEW NUMBER" id="addMe"></button><br><br>

<input type="button" value="SUB TWO NUMBER" id="subMe"></button><br><br>


<input type="button" value="MUL NEW NUMBER" id="mulMe"></button><br><br>

<input type="button" value="DIV TWO NUMBER" id="divMe"></button><br><br>
</div>


//Javascript part
//REDUX-----------------------------------------------
/*starting with redux and rxjs with a simple example
what is redux
redux managed your application state and help's us organize code using store,Reducers,action and subsubscription
introduction=>https://redux.js.org/introduction/motivation
*/

//RxJS-----------------------------------------------
//RxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code.what i found usefull that you can combine multiple action with on a single data stream and based on those result you can handle error and sucess cases

//more about rxjs=>https://rxjs-dev.firebaseapp.com/guide/overview


//import createStore and combineReducers from redux
import {createStore,combineReducers} from "redux";
import {fromEvent} from "rxjs"
//create a mathReducer which would help you to slove math problem such as ad sub mul div
const mathReducer=(state=0,action)=>
{
var result=0;
switch(action.type)
{
case "ADD":
result=action.first+action.second;
break;
case "SUB":
result=action.first-action.second;
break;
case "MUL":
result=action.first*action.second;
break;
case "DIV":
result=Math.round(action.first+action.second);
break;
}
return result;
}

//create a instance of store
const store=createStore(mathReducer);

//differnt action based on math operation
const addAction={
type:"ADD",
first:25,
second:15
}
const subAction={
type:"SUB",
first:25,
second:15
}
const mulMul={
type:"MUL",
first:25,
second:15
}
const divMul={
type:"DIV",
first:25,
second:15
}


store.subscribe(()=>{
document.getElementById("totalValue").value="The Result is:-"+store.getState();

})
//add event ---------using rxjs
const clickActionForAdd = fromEvent(document.getElementById("addMe"), 'click');
clickActionForAdd.subscribe(x =>{
store.dispatch(addAction);
});

const clickActionForSub = fromEvent(document.getElementById("subMe"), 'click');
clickActionForSub .subscribe(x =>
{
store.dispatch(subAction);
}
);

const clickActionForMul = fromEvent(document.getElementById("mulMe"), 'click');
clickActionForMul .subscribe(x => {
store.dispatch(mulMul);
});

const clickActionForDiv= fromEvent(document.getElementById("divMe"), 'click');
clickActionForDiv .subscribe(x => {
store.dispatch(divMul);
});

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...