SlideShare a Scribd company logo
September 2018
Introduction to

React Native
Nacho Martín
Nacho Martin
I write code at Limenius.
We build tailor-made projects,
and provide consultancy
and formation.
We are very happy with React and React Native.
https://github.com/Limenius/workshop-react-native.git
Before we start
🙏
Please go to where you have cloned the repo
of the project
And run git fetch
Goal of the workshop
To be able to estimate how long would
it take you to create a first React Native
project (and if you would enjoy it)
Roadmap:
What is React Native
Starting a project
Working with Styles
Layout
Lists
Navigation
Networking
Touching the native side
What is React Native?
Fundamental premise of React
Give me a state and a render() method
that depends on it and forget about
how and when to render.
render() {
return (
<div className="App">
<button onClick={this.tick}>Click me!</button>
<span>Clicks: {this.state.count}</span>
</div>
)
}
render() {
return (
<div className="App">
<button onClick={this.tick}>Click me!</button>
<span>Clicks: {this.state.count}</span>
</div>
)
}
render() {
return (
<View style={…}>
<Button onPress={this.tick}>Click me!</Button>
<Text>Clicks: {this.state.count}</Text>
</View>
)
}
render() {
return (
<div className="App">
<button onClick={this.tick}>Click me!</button>
<span>Clicks: {this.state.count}</span>
</div>
)
}
render() {
return (
<View style={…}>
<Button onPress={this.tick}>Click me!</Button>
<Text>Clicks: {this.state.count}</Text>
</View>
)
}
render() {
return (
<div className="App">
<button onClick={this.tick}>Click me!</button>
<span>Clicks: {this.state.count}</span>
</div>
)
}
render() {
return (
<View style={…}>
<Button onPress={this.tick}>Click me!</Button>
<Text>Clicks: {this.state.count}</Text>
</View>
)
}
React Native
How is this possible
Reconciliation
Determines what parts
of the tree have changed
How is this possible
Reconciliation
Determines what parts
of the tree have changed
Rendering
Actually
updates the app
How is this possible
Reconciliation
Determines what parts
of the tree have changed
Rendering
Actually
updates the app
We can have several
renderers
React targets
Main
react-dom react-native
Web iOS android
React targets
Main
react-dom react-native
Web iOS android
But also
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
react-konsul raxreact-native  react-blessedreact-tvml
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
react-konsul raxreact-native  react-blessedreact-tvml
React-GLreact-vr  react-hardware react-fs-renderer react-x11
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
react-konsul raxreact-native  react-blessedreact-tvml
React-GLreact-vr  react-hardware react-fs-renderer react-x11
redocx react-titanium  React-Gibbon react-pdf  react-test-renderer
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
react-konsul raxreact-native  react-blessedreact-tvml
React-GLreact-vr  react-hardware react-fs-renderer react-x11
redocx react-titanium  React-Gibbon react-pdf  react-test-renderer
ink  react-sketchapp 
React targets
Main
react-dom react-native
Web iOS android
But also
react-art  react-canvas react-three ReactLibertyreact-worker-dom
react-konsul raxreact-native  react-blessedreact-tvml
React-GLreact-vr  react-hardware react-fs-renderer react-x11
redocx react-titanium  React-Gibbon react-pdf  react-test-renderer
ink  react-sketchapp 
And more
React blessed
React blessed
React Sketch.app
React VR
Demo
How Native is React Native?
JS Thread
Business logic &
Description of what
components to render
How Native is React Native?
JS Thread Main Thread
UI manipulation
with native
components
Business logic &
Description of what
components to render
How Native is React Native?
JS Thread Main Thread
UI manipulation
with native
components
Business logic &
Description of what
components to render
Bridge
How much code can we reuse?
Tip: if you develop in one platform,
test the app in the other from time to time
70%? 80%? 90%?
How to start a project
Option 1: create-react-native-app
$ npm install -g create-react-native-app
$ create-react-native-app AwesomeProject
Option 1: create-react-native-app
Only JS, no iOS or Android code
(outside node_modules)
If you want to modify native code, $ npm run eject
Uses the Expo app to test in real device
Meant to have a quick way of trying
react-native
Option 2: react-native init
$ npm install -g react-native-cli
$ react-native init AwesomeProject
Option 2: react-native init
Complete project with native code
More control
Needed to use things like CodePush
Doesn’t need external tools to publish to
the store
Getting our hands dirty
git clone https://github.com/Limenius/workshop-react-native.git
You are supposed to have done this
🙏
And then yarn install
git checkout master
react-native run-ios
And then
Or
react-native run-android
Debug tools Cmd + d
(Cmd + r)
ctrl+m / cmd+m
Play around
Open app/App.js with an editor
<Text style={styles.welcome}>Hi there!</Text>Change the text in
Try nesting
<Text>
<Text style={styles.welcome}>Hi there!</Text>
Amigo
</Text>
Try changing some styles
welcome: {
fontSize: 100,
textAlign: 'center',
margin: 10,
},
Try placing a console.log(‘hi’) before return(… and see it in
Chrome dev tools
https://www.slideshare.net/nachomartin/react-native-workshop-react-alicante
Familiarize with errors
What happens if we…
remove a closing tag (</View>)
<View style={styles.container}>
Hi there!
</View>
put text not wrapped in <Text/>
try to comment a JSX line with //
return (
<View style={styles.container}>
<Text style={styles.welcome}>Hi there!</Text>
</View>
<View/>
)
have two root elements
use wrong properties for styles ( rename flex -> flexo )
remove the words export default
Basic components
git checkout elements
git reset HEAD --hard
(To discard your changes)
Exercise:
Play with the basic components
app/App.js
Exercise: Build new components
Can you build a new component combining others?
Ideas: Image with footer (<Text/>), two buttons that display different alerts
Can you pass props to that component?
Ideas: Pass the text of the footer with props, pass also the image, pass the titles of the buttons
Can your build a component with local state?
Ideas: Modify the counter to have a “minus 1” button
Style 💅
No CSS. Everything is JS
<View style={{
borderLeftColor: Colors.accent,
borderLeftWidth: 9,
backgroundColor: Colors.backgroundSection,
padding: 18,
paddingVertical: 9,
}}>
No class
No dimensions in pixels
No things like padding: 19 9 3 1
camelCased
Use constants
StyleSheet
<View style={Styles.headline}>
const Styles = StyleSheet.create({
headline: {
borderLeftColor: Colors.accent,
borderLeftWidth: 9,
backgroundColor: Colors.backgroundSection,
paddingLeft: 18,
paddingRight: 18,
paddingTop: 9,
paddingBottom: 9,
},
})
Combination
<View style={[Styles.headline, {backgroundColor: 'red'}]}>
const Styles = StyleSheet.create({
headline: {
borderLeftColor: Colors.accent,
borderLeftWidth: 9,
paddingLeft: 18,
paddingRight: 18,
paddingTop: 9,
paddingBottom: 9,
},
})
git checkout styles
(To discard your changes)
git reset HEAD --hard
We want to build this
Our first goal is to get this
(We will practice layouts in the next section)
components/MovieHeader.js
height: 210
fontWeight:‘bold’
fontSize: FontSizes.LargeTitle
48x48, rounded
backgroundColor: Colors.highlight
color: Colors.text
color: Colors.text
fontWeight:‘bold’
border: left, size 9, Colors.accent
padding: 9, 18
backgroundColor: Colors.backgroundSection
Exercise 1
84x84
Colors.text, bold
Container has: border at bottom size 1, Colors.subtleAccent
and background is 'white'
components/ListItemActor.js
Exercise 2
FontSizes.gigantic
Colors.background
Container has: a background with color: Colors.highlight
components/MainHeader.js
Image is 40x90
FontSizes.subhead
With weight ‘200’
Colors.background
Pro exercise:Think how would you add support for themes
Dimensions
import {
Dimensions,
} from 'react-native'
const windowSize = Dimensions.get('window')
mainImage: {
height: windowSize.height /3,
width: undefined
},
components/MovieHeader.js
Dimensions
import {
Dimensions,
} from 'react-native'
const windowSize = Dimensions.get('window')
mainImage: {
height: windowSize.height /3,
width: undefined
},
Our image height depends on the
Height of the window
Use sparingly
components/MovieHeader.js
Dimensions
import {
Dimensions,
} from 'react-native'
const windowSize = Dimensions.get('window')
mainImage: {
height: windowSize.height /3,
width: undefined
},
Our image height depends on the
Height of the window
Use sparingly
Exercise: Can you make another style dependant of
Dimensions?
What will happen if the device is rotated?
Can you find anything in the documentation to fix it?
components/MovieHeader.js
Further reading
https://www.okgrow.com/posts/react-native-styling-tips
https://madebymany.com/stories/a-year-of-react-native-styling-part-1
https://medium.com/robin-powered/introducing-glamorous-for-react-native-1b8365e7f33f
https://github.com/styled-components/styled-components
Explore libraries to do CSS in JS
Layouts
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column' flexDirection: ‘row’
(Default)
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column' flexDirection: ‘row’
(Default)
main direction
crossdirection
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column' flexDirection: ‘row’
(Default)
main direction
crossdirection
cross direction
maindirection
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column’
(Default)
‘flex-start’ ‘flex-end’ ‘center' ‘space-around’ ‘space-between’
flexDirection: ‘row’
(Default)
‘flex-start’ ‘flex-end’ ‘center' ‘space-around’ ‘space-between’
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column’
(Default)
‘flex-start’ ‘flex-end’ ‘center' ‘stretch’ ‘baseline’
flexDirection: ‘row’
(Default)
‘flex-start’ ‘flex-end’ ‘center' ‘stretch’ ‘baseline’
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘row’
‘baseline’
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flexDirection: ‘column’
alignSelf: ’end’
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flex: 1
flex: 0
flex: 0
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flex: 5
flex: 2
flex: 3
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flex: 0.5
flex: 0.2
flex: 0.3
This is flexbox realm
flexDirection
justifyContent
alignItems
alignSelf
flex
alignContent
flexBasis
flexGrow
flexShrink
flexWrap
flex: 25
flex: 10
flex: 15
git checkout layout
(To discard your changes)
git reset HEAD --hard
Our goal
app/components/MovieHeader.js
app/components/MovieHeader.js
18
Exercise 1
app/components/ListItemActor.js
Exercise 2
Hint: create subviews if you need them
Optional: can you come up with a different layout for any of our three components?
app/components/MainHeader.js
Further reading
https://facebook.github.io/yoga/docs/getting-started/
Docs:
https://github.com/jondot/ReactNativeKatas
Very good practice:
Lists
Lists are important in mobile
Naive lists, as in the web
export default class Movie extends Component {
constructor(props) {
super(props)
this.state = {
movie: movies.find((movie) => movie.name === 'Pulp Fiction')
}
}
render() {
return (
<View>
<MovieHeader movie={this.state.movie}/>
{ this.state.movie.actors.map(actor => (
<ListItem key={actor} name={actor} image={actors[actor].image}/>
))}
</View>
)
}
}
app/components/Movie.js
Naive lists, as in the web
export default class Movie extends Component {
constructor(props) {
super(props)
this.state = {
movie: movies.find((movie) => movie.name === 'Pulp Fiction')
}
}
render() {
return (
<View>
<MovieHeader movie={this.state.movie}/>
{ this.state.movie.actors.map(actor => (
<ListItem key={actor} name={actor} image={actors[actor].image}/>
))}
</View>
)
}
}
Important to help the reconciler do its work
app/components/Movie.js
Exercise
git checkout lists
Can you build a list of movies in
app/components/MovieList.js ?
(To discard your changes)
git reset HEAD --hard
FlatList
Highly optimized List component
Features:
• Scroll loading (onEndReached).
• Pull to refresh (onRefresh / refreshing).
• Configurable viewability (VPV) callbacks (onViewableItemsChanged / viewabilityConfig).
• Horizontal mode (horizontal).
• Intelligent item and section separators.
• Multi-column support (numColumns)
• scrollToEnd, scrollToIndex, and scrollToItem
• Better Flow typing.
FlatList
render() {
return (
<View>
<MovieHeader movie={this.state.movie}/>
<FlatList
data={this.state.movie.actors}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
</View>
)
}
app/components/Movie.js
FlatList
FlatList
What about the keys?
FlatList
What about the keys?
<FlatList
data={this.state.movie.actors}
keyExtractor={item => item}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
FlatList
What about the keys?
<FlatList
data={this.state.movie.actors}
keyExtractor={item => item}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
FlatList
Scrolleable area
<FlatList
data={this.state.movie.actors}
keyExtractor={item => item}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
<MovieHeader movie={this.state.movie}/>
FlatList
Desired scrolleable area
FlatList
Desired scrolleable area
<FlatList
data={this.state.movie.actors}
ListHeaderComponent={<MovieHeader movie={this.state.movie}/>}
keyExtractor={item => item}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
FlatList
Desired scrolleable area
<FlatList
data={this.state.movie.actors}
ListHeaderComponent={<MovieHeader movie={this.state.movie}/>}
keyExtractor={item => item}
renderItem={({item}) =>
<ListItem name={item} image={this.state.actors[item].image}/>
}
/>
Exercise
Can you use FlatList in
app/components/MovieList.js ?
git checkout flatLists
item => item
reminder
In this case works as
function(item) {
return item
}
git reset HEAD —hard
(To discard your changes)
Further reading
https://facebook.github.io/react-native/blog/2017/03/13/
better-list-views.html
Read the docs of the components:
FlatList
SectionList
VirtualizedList
Navigation
Navigation
react-navigation
Several options
StackNavigator TabNavigator DrawerNavigator Or combine them
Several options
StackNavigator TabNavigator DrawerNavigator Or combine them
Several options
StackNavigator TabNavigator DrawerNavigator Or combine them
Several options
StackNavigator TabNavigator DrawerNavigator Or combine them
Let’s do it
git checkout navigation
(To discard your changes)
git reset HEAD --hard
Let’s do it
const App = createStackNavigator({
Home: { screen: MovieList },
Movie: { screen: Movie },
}, {
navigationOptions: {
headerTintColor: Colors.accent,
headerStyle: Styles.header,
}
})
app/App.js
Let’s do it
const App = createStackNavigator({
Home: { screen: MovieList },
Movie: { screen: Movie },
}, {
navigationOptions: {
headerTintColor: Colors.accent,
headerStyle: Styles.header,
}
})
app/App.js
export default class MovieList extends Component {
static navigationOptions = {
title: 'Movies',
}
//…
app/components/MovieList.js
Let’s do it
const App = createStackNavigator({
Home: { screen: MovieList },
Movie: { screen: Movie },
}, {
navigationOptions: {
headerTintColor: Colors.accent,
headerStyle: Styles.header,
}
})
app/App.js
export default class MovieList extends Component {
static navigationOptions = {
title: 'Movies',
}
//…
app/components/MovieList.js
<FlatList
data={this.state.movies}
ListHeaderComponent={<MainHeader/>}
keyExtractor={item => item.name}
renderItem={({item}) =>
<TouchableHighlight
underlayColor={Colors.subtleAccent}
activeOpacity={0.5}
onPress={() => navigate('Movie', {name: item.name})}
>
<View>
<ListItem name={item.name} image={item.image}/>
</View>
</TouchableHighlight>
}
/>
In render()
Let’s do it
const App = createStackNavigator({
Home: { screen: MovieList },
Movie: { screen: Movie },
}, {
navigationOptions: {
headerTintColor: Colors.accent,
headerStyle: Styles.header,
}
})
app/App.js
export default class MovieList extends Component {
static navigationOptions = {
title: 'Movies',
}
//…
app/components/MovieList.js
<FlatList
data={this.state.movies}
ListHeaderComponent={<MainHeader/>}
keyExtractor={item => item.name}
renderItem={({item}) =>
<TouchableHighlight
underlayColor={Colors.subtleAccent}
activeOpacity={0.5}
onPress={() => navigate('Movie', {name: item.name})}
>
<View>
<ListItem name={item.name} image={item.image}/>
</View>
</TouchableHighlight>
}
/>
In render()
Exercise
Can you make a navigation transition from Movie to
app/components/Actor ?
Steps:
- Declare the screen in app/App.js
- Use a TouchableHighlight to capture onPress in the actors
list of <Movie/>
- Provide an appropriate title in <Actor/>
- Make the actor displayed based on
props.navigation.state.params.name
Optional: have a look at
https://reactnavigation.org/docs/en/stack-navigator.html
And tweak the navigation (Ideas: mode modal, add something to headerRight)
Networking
Networking
React-native uses the Fetch API
If you already know it, you are all set 🎉 
Let’s do it
componentDidMount() {
return fetch(baseUrl + '/movies')
.then((response) => response.json())
.then((responseJson) => {
this.setState({
isLoading: false,
movies: responseJson,
})
})
.catch((error) => {
console.error(error);
})
}
app/components/MovieList.js
Let’s do it
git checkout networking
yarn start-server
(or npm run start-server)
(To discard your changes)
git reset HEAD --hard
Further reading
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Docs:
https://github.com/mzabriskie/axios
Additional libraries:
Interactive
Our goal
Working with state
Not specific of React Native,
we just use what we know of React 
Let’s do it
git checkout interactive
(To discard your changes)
git reset HEAD --hard
Modify the native side
Cases where it is needed
Installing packages that have a native side
Making our own changes or components
Installing assets, such as fonts
…
Simple case
Install this font
Let’s do it
"rnpm": {
"assets": ["./assets/fonts/"]
}
package.json
git checkout mod-native
(To discard your changes)
git reset HEAD --hard
(Expo users: https://docs.expo.io/versions/latest/guides/using-custom-fonts)
Let’s do it
"rnpm": {
"assets": ["./assets/fonts/"]
}
package.json
react-native link
git checkout mod-native
(To discard your changes)
git reset HEAD --hard
(Expo users: https://docs.expo.io/versions/latest/guides/using-custom-fonts)
Assets linked
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: android/app/src/main/assets/fonts/OleoScript-Bold.ttf
new file: android/app/src/main/assets/fonts/OleoScript-Regular.ttf
modified: ios/travolta.xcodeproj/project.pbxproj
modified: ios/travolta/Info.plist
modified: package.json
Summary:
What is React Native
Starting a project
Working with Styles
Layout
Lists
Navigation
Networking
Touching the native side
Thanks! @nacmartin
nacho@limenius.com

More Related Content

What's hot (20)

PPTX
Rxjs ppt
Christoffer Noring
 
PDF
react redux.pdf
Knoldus Inc.
 
PPTX
Reactjs
Neha Sharma
 
PDF
Next.js Introduction
Saray Chak
 
PPTX
Sharing Data Between Angular Components
Squash Apps Pvt Ltd
 
PDF
Deep Dive Java 17 Devoxx UK
José Paumard
 
PDF
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Edureka!
 
PPT
React native
Mohammed El Rafie Tarabay
 
PPTX
Introduction to react_js
MicroPyramid .
 
PPTX
Introduction to node.js
Dinesh U
 
PPTX
React workshop
Imran Sayed
 
PPTX
Introduction to React JS
Arnold Asllani
 
PDF
Introduction to Redux
Ignacio Martín
 
PPTX
React js
Alireza Akbari
 
PPTX
React Native
Software Infrastructure
 
PPTX
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri
 
PPTX
React js programming concept
Tariqul islam
 
PPTX
Angular Data Binding
Duy Khanh
 
PDF
React for Beginners
Derek Willian Stavis
 
PDF
React lecture
Christoffer Noring
 
react redux.pdf
Knoldus Inc.
 
Reactjs
Neha Sharma
 
Next.js Introduction
Saray Chak
 
Sharing Data Between Angular Components
Squash Apps Pvt Ltd
 
Deep Dive Java 17 Devoxx UK
José Paumard
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Edureka!
 
Introduction to react_js
MicroPyramid .
 
Introduction to node.js
Dinesh U
 
React workshop
Imran Sayed
 
Introduction to React JS
Arnold Asllani
 
Introduction to Redux
Ignacio Martín
 
React js
Alireza Akbari
 
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri
 
React js programming concept
Tariqul islam
 
Angular Data Binding
Duy Khanh
 
React for Beginners
Derek Willian Stavis
 
React lecture
Christoffer Noring
 

Similar to Introduction to React Native Workshop (20)

PDF
React Native Workshop - React Alicante
Ignacio Martín
 
PDF
React native: building native iOS apps with javascript
Polidea
 
PPTX
JS Fest 2018. Илья Иванов. Введение в React-Native
JSFestUA
 
PPTX
React Native: Introduction
InnerFood
 
PDF
Introduction to React Native
Rami Sayar
 
PDF
React Native
Craig Jolicoeur
 
PPTX
Introduction to React Native
Waqqas Jabbar
 
PPTX
React nativebeginner1
Oswald Campesato
 
PPTX
Creating books app with react native
Ali Sa'o
 
PDF
React && React Native workshop
Stacy Goh
 
PDF
Introduzione a React Native - Facebook Developer Circle Rome
Matteo Manchi
 
PDF
Workshop 24: React Native Introduction
Visual Engineering
 
PDF
GITS Class #20: Building A Fast and Responsive UI in React Native
GITS Indonesia
 
PPTX
React Native
Heber Silva
 
PDF
Connect.js - Exploring React.Native
joshcjensen
 
PPTX
React native tour
Magdiel Duarte
 
PDF
Lessons from a year of building apps with React Native
Ryan Boland
 
PDF
The Gist of React Native
Darren Cruse
 
PPTX
[DevDay2018] React Native – Hello World - By: Trung Pham & React Native team ...
DevDay Da Nang
 
PDF
Learning React Native Building Native Mobile Apps with JavaScript 2nd Edition...
oquinberin6r
 
React Native Workshop - React Alicante
Ignacio Martín
 
React native: building native iOS apps with javascript
Polidea
 
JS Fest 2018. Илья Иванов. Введение в React-Native
JSFestUA
 
React Native: Introduction
InnerFood
 
Introduction to React Native
Rami Sayar
 
React Native
Craig Jolicoeur
 
Introduction to React Native
Waqqas Jabbar
 
React nativebeginner1
Oswald Campesato
 
Creating books app with react native
Ali Sa'o
 
React && React Native workshop
Stacy Goh
 
Introduzione a React Native - Facebook Developer Circle Rome
Matteo Manchi
 
Workshop 24: React Native Introduction
Visual Engineering
 
GITS Class #20: Building A Fast and Responsive UI in React Native
GITS Indonesia
 
React Native
Heber Silva
 
Connect.js - Exploring React.Native
joshcjensen
 
React native tour
Magdiel Duarte
 
Lessons from a year of building apps with React Native
Ryan Boland
 
The Gist of React Native
Darren Cruse
 
[DevDay2018] React Native – Hello World - By: Trung Pham & React Native team ...
DevDay Da Nang
 
Learning React Native Building Native Mobile Apps with JavaScript 2nd Edition...
oquinberin6r
 
Ad

More from Ignacio Martín (16)

PDF
Elixir/OTP for PHP developers
Ignacio Martín
 
PDF
Server side rendering with React and Symfony
Ignacio Martín
 
PDF
Symfony 4 Workshop - Limenius
Ignacio Martín
 
PDF
Server Side Rendering of JavaScript in PHP
Ignacio Martín
 
PDF
Extending Redux in the Server Side
Ignacio Martín
 
PDF
Redux Sagas - React Alicante
Ignacio Martín
 
PDF
Asegurando APIs en Symfony con JWT
Ignacio Martín
 
PDF
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
PDF
Integrating React.js with PHP projects
Ignacio Martín
 
PDF
Keeping the frontend under control with Symfony and Webpack
Ignacio Martín
 
PDF
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Ignacio Martín
 
PDF
Adding Realtime to your Projects
Ignacio Martín
 
PDF
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
PDF
Symfony 2 CMF
Ignacio Martín
 
PDF
Doctrine2 sf2Vigo
Ignacio Martín
 
PDF
Presentacion git
Ignacio Martín
 
Elixir/OTP for PHP developers
Ignacio Martín
 
Server side rendering with React and Symfony
Ignacio Martín
 
Symfony 4 Workshop - Limenius
Ignacio Martín
 
Server Side Rendering of JavaScript in PHP
Ignacio Martín
 
Extending Redux in the Server Side
Ignacio Martín
 
Redux Sagas - React Alicante
Ignacio Martín
 
Asegurando APIs en Symfony con JWT
Ignacio Martín
 
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
Integrating React.js with PHP projects
Ignacio Martín
 
Keeping the frontend under control with Symfony and Webpack
Ignacio Martín
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Ignacio Martín
 
Adding Realtime to your Projects
Ignacio Martín
 
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
Symfony 2 CMF
Ignacio Martín
 
Doctrine2 sf2Vigo
Ignacio Martín
 
Presentacion git
Ignacio Martín
 
Ad

Recently uploaded (20)

PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PDF
Executive Business Intelligence Dashboards
vandeslie24
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Human Resources Information System (HRIS)
Amity University, Patna
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Import Data Form Excel to Tally Services
Tally xperts
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Executive Business Intelligence Dashboards
vandeslie24
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 

Introduction to React Native Workshop