Ville Immonen 6e99e314b2 Move HelloWorld template to a single index.js entry point
Summary:
This change (initially discussed in https://github.com/react-community/create-react-native-app/issues/26) moves the HelloWorld project template from two nearly identical entry points (`index.android.js` and `index.ios.js`) to a single, minimal `index.js` entry point. The root component is created in `App.js`. This unifies the project structure between `react-native init` and Create React Native App and allows CRNA's eject to use the entry point from the HelloWorld template without any hacks to customize it. Also examples in the docs can be just copy-pasted to `App.js` the same way in both HelloWorld and CRNA apps without having to first learn about  `AppRegistry.registerComponent`.

* Created a new project from the template using `./scripts/test-manual-e2e.sh` and verified that:
  * The app builds, starts and runs both on Android and iOS.
  * Editing and reloading changes works.
  * The new files (`index.js`, `App.js`, `__tests__/App.js`) get created in the project folder.

<img width="559" alt="screen shot 2017-08-01 at 19 10 51" src="https://user-images.githubusercontent.com/497214/28835171-300a12b6-76ed-11e7-81b2-623639c3b8f6.png">
<img width="467" alt="screen shot 2017-08-01 at 19 09 12" src="https://user-images.githubusercontent.com/497214/28835180-33d285e0-76ed-11e7-8d68-2b3bc44bf585.png">

<!--
Thank you for sending the PR!

If you changed any code, please provide us with clear instructions on how you verified your changes work. In other words, a test plan is *required*. Bonus points for screenshots and videos!

Please read the Contribution Guidelines at https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md to learn more about contributing to React Native.

Happy contributing!
-->
Closes https://github.com/facebook/react-native/pull/15312

Differential Revision: D5556276

Pulled By: hramos

fbshipit-source-id: 068fdf7e51381c2bc50321522f2be0db47296c5e
2017-08-03 14:02:43 -07:00
..

App templates

This folder contains basic app templates. These get expanded by 'react-native init' when creating a new app to make it easier for anyone to get started.

Chat Example

This is an example React Native app demonstrates ListViews, text input and navigation between a few screens.

screenshot 2017-01-13 17 24 37 screenshot 2017-01-13 17 24 40

Purpose

One problem with React Native is that it is not trivial to get started: react-native init creates a very simple app that renders some text. Everyone then has to figure out how to do very basic things such as adding a list of items fetched from a server, navigating to a screen when a list item is tapped, or handling text input.

This app is a template used by react-native init so it is easier for anyone to get up and running quickly by having an app with a few screens, a ListView and a TextInput that works well with the software keyboard.

Best practices

Another purpose of this app is to define best practices such as:

  • The folder structure of a standalone React Native app
  • A style guide for JavaScript and React - for this we use the AirBnb style guide
  • Naming conventions

We need your feedback to settle on a good set of best practices. Have you built React Native apps? If so, please use the issues in the repo mkonicek/ChatExample to discuss what you think are the best practices that this example should be using.

Running the app locally

cd ChatExample
yarn
react-native run-ios
react-native run-android

(In case you want to use react-navigation master):

# Install dependencies:
cd react-navigation
yarn
yarn pack --filename react-navigation-1.0.0-alpha.tgz
cd ChatExample
yarn
yarn add ~/code/react-navigation/react-navigation-1.0.0-alpha.tgz