1.0.6 • Published 4 years ago

mini-dva v1.0.6

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

mini-dva

install

npm

npm install -S mini-dva

yarn

yarn add mini-dva

demo

model.ts

import { IModel, registryModel } from 'mini-dva';

interface IStateType {
  count: number;
}

const Model: IModel<IStateType> = {
  state: {
    count: 0,
  },
  effects: {
    add : async function ({ payload }, put) {
    const res = await new Promise((resolve) => {
      setTimeout(() => {
        resolve(payload+1);
      }, 3000)
    });
    put({
      type: 'setCount',
      payload: res,
    })
  }

  } ,
  reducers: {
    setCount(prevState, { payload }) {
      return { ...prevState, count: payload };
    }
  }
}

export const [Context, useConnect, useStore] = registryModel(Model);

Count.tsx

import React, { FC, useCallback } from 'react';
import { useConnect } from './modal';


const Count: FC = () => {
  const [model, dispatch] = useConnect();
  const { count } = model;
  const handleClick = useCallback(() => {
    dispatch({
      type: "add",
      payload: count,
    })
  }, [count, dispatch])

  return (
    <div>
      <span>{count}</span>
      <button onClick={handleClick}>Add</button>
    </div>
  )
}

/src/index.tsx

import { Context, useStore } from './model';
import Count from './Count';
import ReactDOM from 'react-dom';

const HomePage = () => {
  const model = useStore();
  return (
    <Context.Provider value={model}>
      <Count />
    </Context.Provider>
  )
}
1.0.2

4 years ago

1.0.1

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.0

4 years ago