
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
@realm.io/react
Advanced tools
A better way to use Realm with React Native applications.
Setting up Realm in a React Native application has historically been complex. Re-rendering of components when objects in the database change requires manually adding and removing listeners, which produce a lot of boilerplate code and is error-prone (if listeners properly removed on unmount). This library alleviates that by providing React hooks which return Realm data that is state aware. As a consequence, any change to the Realm data will cause components using the hook to re-render.
This library requires react-native
>= 0.59 and realm
>= 10.0.0
npm:
npm install @realm.io/react
yarn:
yarn add @realm.io/react
Create a Realm context object with createRealmContext
. It takes a Realm configuration and returns a RealmProvider and contextual hooks.
// realm.ts
import {createRealmContext} from '@realm.io/react';
class Task extends Realm.Object {
_id!: Realm.BSON.ObjectId;
description!: string;
isComplete!: boolean;
static generate(description: string) {
return {
_id: new Realm.BSON.ObjectId(),
description,
isComplete: false,
createdAt: new Date()
};
}
// To use a class as a Realm object type, define the object schema on the static property "schema".
static schema = {
name: 'Task',
primaryKey: '_id',
properties: {
_id: 'objectId',
description: 'string',
isComplete: {type: 'bool', default: false},
createdAt: 'date'
},
};
}
export default createRealmContext({schema: [Task]});
Wrap the component needing access to Realm (possibly your entire application) with the RealmProvider
componenet.
The RealmProvider
also accepts Realm configuration properties.
import RealmContext from './realm';
const {RealmProvider} = RealmContext
function AppWrapper() {
return (
<RealmProvider>
<App />
</RealmProvider>
);
};
The hooks created by createRealmContext
can now be used by any child component.
import RealmContext from './realm';
const {useRealm, useQuery, useObject} = RealmContext
function MyComponent({someId}){
const realm = useRealm();
const tasks = useQuery(Task);
const someObject = useObject<SomeObject>('Objects', someId);
// sort collection with useMemo
const sortedTasks = useMemo( () => tasks.sorted("createdAt"), [tasks])
// make sure the data is there
if(!sortedTasks || !someObject){
return null
}
return ...
}
It is possible to update the realm configuration by setting props on the RealmProvider. The RealmProvider takes props for all possible realm configuration properties.
For example, one could setup the sync configuration based on a user state:
const [user, setUser] = useState()
//... some logic to get user state
<RealmProvider sync={user, parition}>
FAQs
React specific hooks and implementation helpers for Realm
The npm package @realm.io/react receives a total of 5 weekly downloads. As such, @realm.io/react popularity was classified as not popular.
We found that @realm.io/react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.