0.2.0 • Published 3 years ago

@robinblomberg/react-store-hook v0.2.0

Weekly downloads
-
License
-
Repository
github
Last release
3 years ago

React Store Hook

Example

import { useStore } from '@robinblomberg/react-store-hook';

const useLogin = () => {
  const store = useStore({
    handlers: {
      handleEmailChange: (event: React.ChangeEvent<HTMLInputElement>) => {
        store.mutations.setEmail(event.target.value);
      },
      handlePasswordChange: (event: React.ChangeEvent<HTMLInputElement>) => {
        store.mutations.setPassword(event.target.value);
      },
      handleRememberMeChange: (event: React.ChangeEvent<HTMLInputElement>) => {
        store.mutations.setRememberMe(event.target.checked);
      },
    },
    mutations: {
      setEmail: (email: string) => {
        return { email };
      },
      setPassword: (password: string) => {
        return { password };
      },
      setRememberMe: (rememberMe: boolean) => {
        return { rememberMe };
      },
    },
    state: {
      email: '',
      password: '',
      rememberMe: false,
    },
  });
  return store;
};

export const Login = () => {
  const { handlers, state } = useLogin();
  return (
    <form>
      <label>
        {'E-post'}
        <input
          onChange={handlers.handleEmailChange}
          type="email"
          value={state.email}
        />
      </label>
      <label>
        {'Lösenord'}
        <input
          onChange={handlers.handlePasswordChange}
          type="password"
          value={state.password}
        />
      </label>
      <label>
        <input
          checked={state.rememberMe}
          onChange={handlers.handleRememberMeChange}
          type="checkbox"
        />
        {'Kom ihåg mig'}
      </label>
      <button type="submit">{'Logga in'}</button>
    </form>
  );
};