@readytogo/state
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

readytogo-state

Share the state among any React components

Usage

import { instanceofState, getState, useState } from '@readytogo/state';

const PageOne = () => {
	const counter = useState('counter', 5);
	instanceofState(counter); // true
	return (
		<Button />
	);
}

const PageTwo = () => {
	return (
		<Button />
	);
}

const Button = () => {
	const counter = useState('counter', 7);
	instanceofState(counter); // true
	const onClick = () => {
		counter.update(counter.getValue() + 1);
	}
	return (
		<button onClick={onClick}>
			<Text />
		</button>
	);
}

const Text = () => {
	const counter = getState('counter', undefined);
	instanceofState(counter); // true
	if (counter.getValue() === undefined) {
		return (
			<div>Error: Rendered before PageOne or Button</div>
		);
	}
	return (
		<div>{counter.getValue()}</div>
	);
}

Note

The useState() hook registers the component to be re-rendered when the value of the state changes. It registers the component on mount and unregisters the component on unmount. It always returns the state instance associated with the unique key and sets the initial value of the state if it was not set before. The getState() function always returns the state instance associated with the unique key and sets the initial value of the state if it was not set before. The instanceofState() function checks whether something is an instance of State class. In the usage above, if PageOne is rendered, then the initial value of the counter state will be 5, and both the PageOne and Button components will re-render every time the button is clicked. To avoid unnecessary re-renders, make sure that useState() is called only in the topmost parent component that depends on the state. All children components will re-render automatically when the parent re-renders. If PageTwo is rendered, then the initial value of the counter state will be 7. So, the parent components that render first determine the initial value of the state. The state is shared among all the components that use the same unique key. To make a state local to a specific component, use a unique key that is not used by any other component.

Package Sidebar

Install

npm i @readytogo/state

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

11.6 kB

Total Files

10

Last publish

Collaborators

  • yash-patel