Skip to main content

Loading data form external api automatically and using some event such as on a button click in reactjs

beginner level- just creating a simple example how to load data from a external api using typescript and reactjs.

running code: link https://stackblitz.com/edit/react-ts-ek3vme

code:-

//calling data from external api
//calling data on event

import React, { Component } from 'react';
import { render } from 'react-dom';
import './style.css';

interface AppProps {

}
//user data interface
interface userData
{
key:string;
body:string;
title:string;
userId:number;
id:number;
}//urldata interface
interface urlData
{
origin:string;
url:string;
}
//app state interface
interface AppState {
name: string;
data:urlData
userdata:Array<userData>;
}
//app code
class App extends Component< AppProps,AppState> {
listName:string="click on button to load list"
load:Function=null;
constructor(props) {
super(props);
this.state = {
name: "loading.....",
data:{
origin:null,
url:null,
},
userdata:new Array<userData>()

};
}
//componentDidMount called immediately after component rendered first time
componentDidMount() {

fetch("https://httpbin.org/get")
.then(res => res.json())
.then(
(result) => {
var data:urlData={
origin:null,
url:null
};
data.origin=result.origin;
data.url=result.url;
this.setState({
name: "auto load data from rest api",
data:data
});
},
(error) => {
console.log(error);
}
)
}
//load data from external url
loadData(url:string)
{
fetch(url)
.then(res => res.json())
.then(
(result) => {
result.map((object, i)=>{
var mydata:userData=
{
key:object.id,
body:object.body,
title:object.title,
userId:object.userId,
id:object.id
}
this.state.userdata.push(mydata);
}
)

this.setState({
name: "load data on button click",
userdata:this.state.userdata
});
},

(error) => {
}
)

}
render() {
return (
<div>
<p>{this.state.name}</p>
<p>{this.state.data.url}</p>
<p>{this.state.data.origin}</p>
<button onClick={this.load=()=>{
//pass api url
this.loadData("https://jsonplaceholder.typicode.com/posts");
}}>Load data from external sources</button>
<p>{this.listName}</p>
<ul>
{this.state.userdata.map(data => (
<li key={data.key}>
<b>Heading:=> {data.title}</b><br></br>
<b>all Data:=></b>{data.body}
</li>
))}
</ul>
</div>
);
}
}

render(<App />, document.getElementById('root'));

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" : ...