Skip to content

Commit

Permalink
Update EmbededApp.md
Browse files Browse the repository at this point in the history
Use ``` instead of indentation for code blocks
  • Loading branch information
meetwudi committed Mar 31, 2015
1 parent 9c8fdaf commit b873fd6
Showing 1 changed file with 74 additions and 46 deletions.
120 changes: 74 additions & 46 deletions docs/EmbededApp.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,42 +13,60 @@ next: activityindicatorios

When you are ready to work with Cocoapods, add the following line to `Podfile`. If you don't have one, then create it under the root directory of your project.

pod 'React'
pod 'React/RCTText'
# Add any subspecs you want to use in your project
```
pod 'React'
pod 'React/RCTText'
# Add any subspecs you want to use in your project
```

Remember to install all subspecs you need. The `<Text>` element cannot be used without `pod 'React/RCTText'`.
Then install pods via shell

$ pod install --verbose

```
$ pod install --verbose
```

The installation process also requires [Node.js](http://nodejs.org).

## Create Your React Native App

First, enter React Native's pod root directory and create **index.ios.js** inside a directory `ReactComponent`.

$ cd Pods/React
$ mkdir ReactComponent
$ touch index.ios.js

```
$ cd Pods/React
$ mkdir ReactComponent
$ touch index.ios.js
```

Copy & paste following starter code for **index.ios.js**.

var React = require('react-native');

var {
Text
} = React;

class SimpleApp extends React.Component {
render() {
return <Text>This is a simple application.</Text>
}
}

AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

```
var React = require('react-native');
var {
Text,
View
} = React;
var styles = React.StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'red'
}
});
class SimpleApp extends React.Component {
render() {
return <View style={styles.container}>
<Text>This is a simple application.</Text>
</View>;
}
}
React.AppRegistry.registerComponent('SimpleApp', () => SimpleApp);
```

`SimpleApp` will be your **module name**, which will be used later on.

## Add Container View To Your App
Expand All @@ -59,21 +77,24 @@ You should now add container view for React Native component. It can be any **UI

However, let's subclass **UIView** for the sake of clean code. Let's name it **ReactView**. Open up **Yourproject.xcworkspace** and create a new class **ReactView** (You can name it whatever you like :)).

// ReactView.h

#import <UIKit/UIKit.h>
@interface ReactView : UIView
@end
```
// ReactView.h
#import <UIKit/UIKit.h>
@interface ReactView : UIView
@end
```

Don't forget to add an outlet for it.

// ViewController.m

@interface ViewController ()
@property (weak, nonatomic) IBOutlet ReactView *reactView;
@end


```
// ViewController.m
@interface ViewController ()
@property (weak, nonatomic) IBOutlet ReactView *reactView;
@end
```

Here I disabled **AutoLayout** for simplicity. In real production world, you should turn on AutoLayout and setup constraints by yourself.

## Add RCTRootView To Container View
Expand All @@ -82,22 +103,29 @@ Ready for the most interesting part? Now we shall create the **RCTRootView**, wh

In **ReactView.m**, we need to first initiate **RCTRootView** with the URI of your **index.ios.bundle**. **index.ios.bundle** will be created by packager and served by React Native server, which will be discussed later on.

NSString *urlString = @"http://localhost:8081/index.ios.bundle";
NSURL *jsCodeLocation = [NSURL URLWithString:urlString];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName: @"SimpleApp"
launchOptions:nil];
```
NSString *urlString = @"http://localhost:8081/index.ios.bundle";
NSURL *jsCodeLocation = [NSURL URLWithString:urlString];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName: @"SimpleApp"
launchOptions:nil];
```

Then add it as a subview of the **ReactView**.

[self addSubview:rootView];
rootView.frame = self.bounds;

```
[self addSubview:rootView];
rootView.frame = self.bounds;
```

## Start Development Server

In root directory, we need to start React Native development server.

$ ./Pods/React/packager/packager.sh --root ./ReactComponents

```
$ ./Pods/React/packager/packager.sh --root ./ReactComponents
```

`--root` indicates the root of your React Native apps. Here we just have one **index.ios.js**. React Native development server will use packager to create a **index.ios.bundle**. Which can be access via `http://localhost:8081/index.ios.bundle`.

## Compile And Run
Expand Down

0 comments on commit b873fd6

Please sign in to comment.