From b873fd6e31038cb826d3356f7d4c2ae9be5cc473 Mon Sep 17 00:00:00 2001 From: John Wu Date: Tue, 31 Mar 2015 23:01:14 +0800 Subject: [PATCH] Update EmbededApp.md Use ``` instead of indentation for code blocks --- docs/EmbededApp.md | 116 ++++++++++++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 44 deletions(-) diff --git a/docs/EmbededApp.md b/docs/EmbededApp.md index fcf3c938e..4cc57786a 100644 --- a/docs/EmbededApp.md +++ b/docs/EmbededApp.md @@ -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 `` 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 React = require('react-native'); - var { - Text - } = React; - - class SimpleApp extends React.Component { - render() { - return This is a simple application. - } - } - - AppRegistry.registerComponent('SimpleApp', () => SimpleApp); - +var { + Text, + View +} = React; + +var styles = React.StyleSheet.create({ + container: { + flex: 1, + backgroundColor: 'red' + } +}); + +class SimpleApp extends React.Component { + render() { + return + This is a simple application. + ; + } +} + +React.AppRegistry.registerComponent('SimpleApp', () => SimpleApp); +``` + `SimpleApp` will be your **module name**, which will be used later on. ## Add Container View To Your App @@ -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 - @interface ReactView : UIView - @end +``` +// ReactView.h +#import +@interface ReactView : UIView +@end +``` Don't forget to add an outlet for it. - - // ViewController.m + +``` +// ViewController.m - @interface ViewController () - @property (weak, nonatomic) IBOutlet ReactView *reactView; - @end - +@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 @@ -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