I was thinking to learn React – and transform the Angular site to React.
The steps that I took are the folllowing:
-
Learn React from https://reactjs.org/tutorial/tutorial.html – and learning that React is a library,not a framework
-
Learn useEffect,useState with Hooks – very easy
-
Learn that React can have a TypeScript template – it will make harder to develop,but in the end it is safer.
Lesson Learned:
1.The typescript classes are the same – so can be translated from Angular to React
- The Observables are the same,with a difference: HttpClient does not exists. So we pass from HttpClient to Ajax
In Angular:
return ajax.get<string>(this.baseUrl+`PublicTILTs/CountTILTs/${id}/count`,options)
In React
this.http.get(this.baseUrl+`PublicTILTs/CountTILTs/${id}/count`,options)
- Environment.ts is modified to .env.local and .env.production
In Angular
export const environment = {
production: true,
url: 'https://tiltwebapp.azurewebsites.net/',
};
As a usage,
import { environment } from 'src/environments/environment';
//code
this.baseUrl=environment.url+'api/';
In React
PUBLIC_URL=/ReactTilt
REACT_APP_PRODUCTION=true
REACT_APP_URL=https://tiltwebapp.azurewebsites.net/
As a usage
this.baseUrl=process.env.REACT_APP_URL+'api/';
- UseEffect can give infinite loops
If you use set from hooks in useEffect,can give infinite loops. See very important below.
useEffect(()=>{
var publicService= new PublicTiltsService();
var x= publicService.getUrls().subscribe(data=>{
data.forEach( it=>{
publicService.nrTilts(it).subscribe(a=>
{
console.log("obtaining ",a );
addTilts((prevState:publicTilt[])=> [...prevState,a] );
}
);
});
});
return ()=> x.unsubscribe();
},[]);//very important!
-
Do not forget about setting PUBLIC_URL .
-
In development,if you investigate Developer Tools it is better refresh the page ( in angular it is auto refreshed)
Leave a Reply