React and React Native app provide magic platform-splitting functionality based on special file extensions. Just the component for the target platform is compiled at build time.
Follow these practice:
- Put the component in a folder
- Break out the shared interface into a separate .d.tsfile.
- Name the web/default file index.tsx(notindex.web.tsx)
- Name the native file index.native.tsx(bothiosandandroid)
- For android splitting, add index.android.tsxwhich will override.native
The .d.ts file enables VS Code code hinting for JSX props, and helps manage the project cross-platform by ensuring the consumers of the component have a unified interface.
Use the NodeJS version 8.11.3
npm install
npm run mock:server
npm start
npm run ios
npm run android
Beware auto-imports! It's easy to accidentally import a file like this:
import Header from './Header/index.android';instead of the correct generic way:
import Header from './Header';Also, when working on the native app, be mindful that VS Code's Go To Definition will always jump to the index.tsx (web) file.