easy way to create a shared state to the entire application
npm install @raulpesilva/re-state``sh`
npm install @raulpesilva/re-state
or
`sh`
yarn add @raulpesilva/re-state
`tsx
import * as React from 'react';
import { useReState } from '@raulpesilva/re-state';
import { StyleSheet, View, Text, Button } from 'react-native';
const Foo: React.FC = () => {
const [value, setValue] = useReState
return (
);
};
const Bar: React.FC = () => {
const [value] = useReState
return (
);
};
export default function App() {
return (
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
`
`ts
// state/user/index.ts
import { createReState, createReStateSelect, createReStateDispatch, createGetReState } from '@raulpesilva/re-state';
type User = {
_id: string;
name: string;
email: string;
iat: number;
avatar: string;
};
export const USER = 'user';
export const userInitialValue = {};
export const useUser = createReState
export const useUserSelect = createReStateSelect
export const dispatchUser = createReStateDispatch
export const getUser = createGetReState
export const resetUser = () => dispatchUser(userInitialValue);
`
`tsx
// components/User.tsx
import { useUser } from 'state/user';
const User = () => {
const [user, setUser] = useUser();
return (
{user.email}
Using previous state
`tsx
// components/User.tsx import { useUser } from 'state/user'
const User = () => {
const [user, setUser] = useUser()
return (
{user.name}

{user.email}
setUser((prev) => {...prev, name: 'Raul P' })}>
Change name
)
}`or
`tsx
// components/User.tsx import { useUserSelect, useUserDispatch } from 'state/user/index'
const User = () => {
const user = useUserSelect()
return (
{user.name}

{user.email}
useUserDispatch((prev) => {...prev, name: 'Raul P' })}>
Change name
)
}`Adding changeName action
`ts
// state/user/index.ts
...
export const dispatchUser = createReStateDispatch(USER)
export const getUser = createGetReState(USER)
export const resetUser = () => dispatchUser(userInitialValue)
// + adding changeName action
export const changeName = (name: string) => dispatchUser((prev) => ({...prev, name})) ``tsx
// components/User.tsximport { useUserSelect, changeName } from 'state/user/index';
const User = () => {
const user = useUserSelect();
return (
{user.name}

{user.email}
changeName('Raul P')}>Change name
);
};
``See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT © raulpesilva