Reactjs et React Native4
Reactjs et React Native4
Web Browser
- React JS
- React Native Browser DOM
Séance 4
JSX Files
JSX Files
JSX Files
JSX Files
JSX Files Updates
Java Script Files Events
Synchrinization
Mostafa JEBBAR
Laboratoire C3S
EST, Université Hassan II de Casablanca, Maroc
Email : [email protected]
Supports de cours : http://fr.slideshare.net/mostafajebbar
Chaîne vidéo : http://youtube.com/mostafajebbar
Recherche : http://www.researchgate.net/profile/Jebbar_Mostafa/publications
Les Cycles de Vie d’un Composant
Site
Méthodes
Déclenchées
import React, {Component} from "react"; import './About.css'; About.js
import SillsForm from "./SkillsForm";
export default class About extends Component{ React Component
constructor(props){
super(props);
this.state={
Component
contact:{
name:’M.JEBBAR', email:’[email protected]', picture:'./image/profile.jpg'
State : (props, setState)
}, Données
skills:[
{id:1,title:'Software Engineering'}, {id:2,title:'UI Design'},]
}; Rendering : About
}
render(){
(JSX, HTML, CSS) Component
return(
<div>
<label><b>{this.props.inputMessage}</b></label>
Behaviour :
<img src="images/profile.jpg" className="profile img-thumbnail" alt="Profile" /> (JSX)
<ul>
<li><b>Name : </b>{this.state.contact.name}</li>
<li><b>Email : </b> {this.state.contact.email}</li> onDelete=(s)=>{
</ul> let index=this.state.skills.indexOf(s);
<table className="table"> let skills=[...this.state.skills];
<thead> <tr> <th>ID</th><th>Title</th></tr></thead> skills.splice(index,1);
<tbody> this.setState({
{this.state.skills.map(s=> skills:skills
<tr key={s.id}> }) }
<td>{s.id}</td> <td>{s.title}</td> }
function App() {
<td><button onClick={()=>this.onDelete(s)}>X</button></td>
return (
</tr>
<div>
)}
<About inputMessage="Keep your smile"/>
</tbody>
</div>
</table>
);
</div>
} App.js
); }
Exemple de
Composants React
App
Component
About
Component
SkillsForm
Component
> npm install –save bootstrap
App Component : App.js
function App() {
return (
<div className="container">
<About inputMessage="Keep your smile"/>
</div>
);
}
<table className="table">
<thead>
<tr>
<th>ID</th><th>Title</th>
</tr>
</thead>
<tbody>
{this.state.skills.map(s=>
<tr key={s.id}>
<td>{s.id}</td>
<td>{s.title}</td>
<td><button onClick={()=>this.onDelete(s)} className="btn btn-danger text-white">X</button></td>
</tr>
)}
</tbody>
</table>
</div>
</div>
</div>
);
}
About Component : About.js
onAddSkill=(skillTitle)=>{
const skill={id:[...this.state.skills].pop().id+1,title:skillTitle}
this.setState({
skills:[...this.state.skills,skill]
})
}
onDelete=(s)=>{
let index=this.state.skills.indexOf(s); let skills=[...this.state.skills];
skills.splice(index,1);
this.setState({
skills:skills
})
}
componentDidMount(){ console.log("Component Dit Mount"); }
componentWillMount(){ console.log("Component Will Mount...") }
componentWillUpdate(){ console.log("Will Update");}
componentDidUpdate(){ console.log("Did Update") }
}
SkillsForm Component : SkillsForms.js
setSkillValue=(event)=>{
this.setState({
skillValue:event.target.value
})
}
onAddSkill=(event)=> {
event.preventDefault();
this.props.onAddNewSkill(this.state.skillValue);
this.setState({
skillValue:''
})
}
}
Construire L’application : > npm run-script build
"homepage" : "http://myname.github.io/myapp",
bit.ly/CRA-deploy