React JS
React JS
REACT JS EN
ESPAÑOL –
TUTORIAL
BÁSICO Y
PRIMEROS
PASOS
2 febrero, 2016 • por Wilson Flores Turriate
En este post se le hablará acerca de los primeros pasos en React js, los
puntos a exponer son los siguientes.
• ¿Que es React js?
• Componentes en React js
• Sintaxis JSX
• Virtual Dom
• Props y State
• Ciclo de vida de los componentes
|-- 1-hello-world
|-- app
|-- components
|-- main.jsx
|-- public
|-- index.html
|-- package.json
|-- webpack.config.js
REACT JS
REACT-DOM
BABEL-LOADER
BABEL-PRESET-ES2015
BABEL-PRESET-REACT
WEBPACK
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="container"></div>
<script type="text/javascript" src="build.js"></script>
</body>
</html>
"scripts": {
"build": "webpack -w",
},
module.exports = {
entry: './app/components/main.jsx',
output: {
path: './public/',
filename: "build.js",
},
module: {
loaders: [
{
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
Con esto tenemos todo listo para nuestros siguientes ejemplos, sólo deben
ejecutar npm run build para transpilarlo.
COMPONENTES EN REACT JS
( ES5)
ReactDOM.render(
<HelloWorld />,
document.getElementById('container')
);
ReactDOM.render(
<HelloWorld />,
document.getElementById('container')
);
SINTAX IS JSX
No necesariamente tiene que usar JSX con React js,si usted desea puede
usar solo javascript, claro está que se recomienda utilizar JSX por que es
más legible a la hora de desarrollar.
Para transpilar JSX puedes usar babel.
Sin JSX
Con JSX
V IRTUAL DOM
PROPS
Al igual que hemos visto en los elementos html, donde podías agregarle
atributos en su etiqueta de entrada, también hay formas para personalizar
los componentes de react js, digamos que las propiedades son para los
componentes de React js como los atributos son a los elementos html.
( ES5)
ReactDOM.render(
<MyComponent name="Jupiter" />,
document.getElementById('container')
);
( ES6 )
ReactDOM.render(
<MyComponent name="Jupiter" />,
document.getElementById('container')
);
(ES5)
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
(ES6)
MyComponent.defaultProps = {
name:'Saturno'
};
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
STATE
( ES5)
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES6 )
Que pasa si queremos setear nuestro state en un futuro con alguna acción,
es donde el método this.setState entra en escena, este es el método
principal que se utiliza para hacer cambios en la interfaz de usuario.
( ES5)
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES6 )
update(){
this.setState({message:'Saturno'})
}
render(){
return <div>
<span>My Component {this.state.message}<br></br></span>
<button onClick={this.update}>click me</button>
</div>
}
}
MyComponent.defaultProps = {
val:0
};
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
MOUNTING
UPDATING
UNMOUNTING
Existen varios métodos que nos provee React js que nos ayudará a la hora
de crear nuestros componentes para distintos escenarios.
MOUNTING : COMPONENTWILLMOUNT
( ES5)
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES6 )
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
MOUNTING : COMPONENTDIDMOUNT
( ES5)
render:function(){
return (<div>MyComponent</div>)
}
});
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES6 )
componentDidMount(){
console.log('Mount');
}
render(){
return <div>MyComponent</div>
}
}
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES5)
( ES6 )
UPDATING : SH OULDCOMPONENTUPDATE
( ES5)
shouldComponentUpdate:function(nextProps,nextState){
console.log(nextProps);
return nextProps.val % 2 == 0;
},
componentWillUpdate:function(){
console.log('Update MyComponent...');
},
update:function(){
ReactDOM.render(
<MyComponent val={this.props.val + 1}/>,
document.getElementById('container')
);
},
render:function(){
return (<div>
<span>My Component contador:</span>
<button onClick={this.update}>{this.props.val}</button>
</div>)
}
});
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
( ES6 )
shouldComponentUpdate(nextProps,nextState){
console.log(nextProps);
return nextProps.val % 2 == 0;
}
componentWillUpdate(){
console.log('Update MyComponent...');
}
update(){
ReactDOM.render(
<MyComponent val={this.props.val + 1}/>,
document.getElementById('container')
);
}
render(){
return <div>
<span>My Component contador:</span>
<button onClick={this.update}>{this.props.val}</button>
</div>
}
}
MyComponent.defaultProps = {
val:0
};
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
UPDATING : COMPONENTWILLUPDATE
( ES5)
( ES6 )
ReactDOM.render(<MyComponent
name="jupiter"/>,document.getElementById('container'));
ReactDOM.render(<MyComponent
name="neptuno"/>,document.getElementById('container'));
UPDATING : COMPONENTDIDUPDATE
ReactDOM.render(<MyComponent
name="jupiter"/>,document.getElementById('container'));
ReactDOM.render(<MyComponent
name="neptuno"/>,document.getElementById('container'));
( ES6 )
ReactDOM.render(<MyComponent
name="jupiter"/>,document.getElementById('container'));
ReactDOM.render(<MyComponent
name="neptuno"/>,document.getElementById('container'));
UNMOUNTING : COMPONENTWILLUNMOUNT
( ES5)
( ES6 )
componentWillMount(){
console.log('Mount');
}
componentWillUnmount(){
console.log('Unmount');
}
render(){
console.log('Rendering');
return <div>I am component</div>
}
}
mount(){
ReactDOM.render(<MyComponent />,document.getElementById
('component'));
}
unmount(){
ReactDOM.unmountComponentAtNode(document.getElementById
('component'));
}
render(){
return(
<div>
<button onClick={this.mount.bind(this)}>Mount
component</button>
<button onClick={this.unmount.bind(this)}>Unmount
component</button>
<div id="component"></div>
</div>
)
}
}
F UENTES
RELACIONADO
Únete a la discusión...
Name