Recoil demo
State management in React with Recoil.
Similar to Context or Redux, Recoil is presented as a more efficient and simple way to share the state between the app components. It is experimental. Learn more in https://recoiljs.org/.
Create a react app
npx create-react-app recoil-demo
Add Recoil
npm install recoil
Basis: An atom will be a piece of the state
const textState = atom({
  key: "sharedValue", // unique ID (with respect to other atoms/selectors)
  default: "", // default value (aka initial value)
});
Basis: The atom can be consumed by the components
const [sharedValue, setSharedValue] = useRecoilState(textState);
Consumer1.js
import { atom, useRecoilState } from "recoil";
const textState = atom({
  key: "sharedValue", // unique ID (with respect to other atoms/selectors)
  default: "", // default value (aka initial value)
});
export function Consumer1() {
  const [sharedValue, setSharedValue] = useRecoilState(textState);
  return (
    <div>
      Consumer 1
      <input
        value={sharedValue}
        onChange={(e) => setSharedValue(e.target.value)}
      />
    </div>
  );
}
Consumer2.js
import { atom, useRecoilState } from "recoil";
const textState = atom({
  key: "sharedValue", // unique ID (with respect to other atoms/selectors)
  default: "", // default value (aka initial value)
});
export function Consumer2() {
  const [sharedValue, setSharedValue] = useRecoilState(textState);
  return (
    <div>
      Consumer 2
      <input
        value={sharedValue}
        onChange={(e) => setSharedValue(e.target.value)}
      />
    </div>
  );
}
App.js
import "./App.css";
import { Consumer1 } from "./Consumer1";
import { Consumer2 } from "./Consumer2";
import { RecoilRoot } from "recoil";
function App() {
  return (
    <RecoilRoot>
      <Consumer1 />
      <Consumer2 />
    </RecoilRoot>
  );
}
export default App;
 
            
 
             
             
             
            