Native store for react-native
- Xcode 8+
- iOS 9+
- Minimum SDK 16
Run npm install --save native-store
to add the package to your app's dependencies.
Run react-native link native-store
so your project is linked against your Xcode project and all CocoaPods dependencies are installed.
- Open your project in Xcode workspace.
- Drag the following folder into your project:
node_modules/native-store/ios/TPSStore/
- Open your project in Xcode, right click on Libraries and click
Add Files to "Your Project Name"
. - Look under
node_modules/native-store/ios
and addTPSStore.xcodeproj
. - Add
libTPSStore.a
toBuild Phases
->Link Binary With Libraries
. - Click on
TPSStore.xcodeproj
in Libraries and go the Build Settings tab. Double click the text to the right ofHeader Search Paths
and verify that it has$(SRCROOT)/../../react-native/React
- if they aren't, then add them. This is so Xcode is able to find the headers that theTPSStore
source files are referring to by pointing to the header files installed within thereact-native
node_modules
directory. - Whenever you want to use it within React code now you can:
import Storage from 'native-store'
Run react-native link native-store
so your project is linked against your Android project
In your app build.gradle
add:
...
dependencies {
...
compile project(':native-store')
}
In your settings.gradle
add:
...
include ':native-store'
project(':native-store').projectDir = new File(rootProject.projectDir, '../node_modules/native-store/android')
Let's require native-store
module:
import Storage from 'native-store'
To change store
state from React use:
Storage.setState({...})
To get the current state of native store
use:
const state = await Storage.getState()
To subscribe on store
state changes use:
this.unsubscribe = Storage.subscribe(this.yourFunction)
As a result you will get unsubscribe
function.
Don't forget to unsubscribe, typically you can do it in componentWillUnmount
componentWillUnmount() {
this.unsubscribe()
}
To run native-store
unit tests and example
app e2e tests for all platforms you can use npm run ci
command.
- Go to example folder
cd example
- Install npm dependencies
npm install
- Build project:
npm run build:ios
- for iOSnpm run build:android
- for Androidnpm run build
- for both iOS and Android
- Open Appium in other tab
npm run appium
- Run tests:
npm run test:ios
- for iOSnpm run test:android
- for Androidnpm run test
- for both iOS and Android
You might encounter the following error while trying to run tests:
An unknown server-side error occurred while processing the command. Original error: Command \'/bin/bash Scripts/bootstrap.sh -d\' exited with code 1
You can fix it by installing Carthage
:
brew install carthage
To see more of the native-store
in action, you can check out the source in example folder.
native-store is available under the MIT license. See the LICENSE file for more info.