E S D I F E R E N T E var StarTechConf = React.createClass({ render: function() { return ( <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}> <Text style={{justifyContent: 'center', fontSize: 50, margin: 10}}> StarTechConf </Text> <Text style={{fontSize: 20, marginBottom: 40}}> Esto es un ejemplo. </Text> </View> ); } });
reemplazan a HTML • Se usa un subgrupo de propiedades CSS y se declaran en JS <Text> <p> <Image> <img> <View> <div> <TouchableHighlight> <button> <TouchableNativeFeedback> <button> (android) <Text style={fontSize: 20, margin: 10}> <Text style={styles.ejemplo}> var styles = StyleSheet.create({ ejemplo: { fontSize: 20, padding: 20 }, });
S E A N Y W H E R E I N D E X . I O S . J S I N D E X . A N D R O I D . J S var StarTechSwitch = React.createClass({ getInitialState : function() { return { SwitchIsOn: true }; }, handleChange: function(value) { console.log('El valor es...', value) this.setState({SwitchIsOn: value}); }, render: function() { return ( <View style={style.view}> <SwitchAndroid value={this.state.SwitchIsOn} onValueChange={this.handleChange} /> </View> ); }, }); var StarTechSwitch = React.createClass({ getInitialState : function() { return { SwitchIsOn: true }; }, handleChange: function(value) { console.log('El valor es...', value) this.setState({SwitchIsOn: value}); }, render: function() { return ( <View style={style.view}> <SwitchIOS value={this.state.SwitchIsOn} onValueChange={this.handleChange} /> </View> ); }, });
S E A N Y W H E R E I N D E X . I O S . J S I N D E X . A N D R O I D . J S var funcionComplicada = require('./funcionComplicada'); var StarTechSwitch = React.createClass({ getInitialState : function() { return { SwitchIsOn: true }; }, handleChange: function(value) { funcionComplicada(value); this.setState({SwitchIsOn: value}); }, render: function() { return ( <View style={style.view}> <SwitchAndroid value={this.state.SwitchIsOn} onValueChange={this.handleChange} /> </View> ); }, }); var funcionComplicada = require('./funcionComplicada'); var StarTechSwitch = React.createClass({ getInitialState : function() { return { SwitchIsOn: true }; }, handleChange: function(value) { funcionComplicada(value); this.setState({SwitchIsOn: value}); }, render: function() { return ( <View style={style.view}> <SwitchIOS value={this.state.SwitchIsOn} onValueChange={this.handleChange} /> </View> ); }, });
A D E T E R C E R O S • Tanto React Native como Cordova dependen de plugins/componentes para interactuar de manera nativa con el dispositivo. • Si no existe, es necesario hacerlo de cero requiriendo conocimiento del lenguaje correspondiente.
HTML/CSS solo pueden imitar el aspecto nativo, nunca igualándolo. • React Native usa componentes pero hay que seguir las guidelines de UX de cada plataforma para lograr un resultado apropiado.
“ T H E S TAT E O F J AVA S C R I P T O N A N D R O I D I N 2 0 1 5 I S … P O O R ” “In a nutshell, the fastest known Android device available today [Galaxy S6] -- and there are millions of Android devices much slower than that out there -- performs 5× slower than a new iPhone 6s, and a little worse than a 2012 era iPhone 5 in Ember.”
O R D O VA R E A C T N AT I V E D E S A R R O L L O R Á P I D O R E Q U I E R E U N PA R A D I G M A N U E V O L I B E R TA D G R Á F I C A L I M I TA D O A C O M P O N E N T E S P E R F O R M A N C E L I M I TA D O A W E B V I E W U I N AT I VA P L ATA F O R M A M A D U R A T O D AV Í A E N S U S I N I C I O S S O B R E T O D O E N A N D R O I D
La experiencia de usuario no depende exclusivamente de la herramienta que se usas, depende del cuidado que se ponga en el desarrollo y diseño de la aplicación.