@aks-dev/use-model
TypeScript icon, indicating that this package has built-in type declarations

1.0.20 • Public • Published

[step-1]安装


$ npm install @aks-dev/use-model --save

or

$ yarn add @aks-dev/use-model

[step-2]创建全局状态(useAppModel.ts)




import { createAppModel, AppModel } from '@aks-dev/use-model'

type Props = {
    backgroundColor: string;
    count:number;
    name:string;
}

export let initValue: Partial<Props> = {
    backgroundColor: 'pink',
    count:-1
}

export const useAppModel: AppModel<Props> = createAppModel(initValue)

[step-3]创建单页状态(useViewModel.ts)


import React, { Context } from 'react'

import { createViewModel, ViewModel } from '@aks-dev/use-model'

type P = {
    backgroundColor: string;
    count: number;
    name: string;
}

export const initValue: Partial<P> = {
    backgroundColor: 'pink',
    count: -10000
}



export const useViewModel = <T>(state?: T): ViewModel<T & P> => createViewModel(Object.assign(initValue, state))



type Prop<T> = {
    viewModel: T & P,
    setViewModel: (intent: Partial<T & P>) => void
}

export const createContext = <S, T>(): Context<Partial<S> & Prop<T & P>> => React.createContext<Partial<S> & Prop<T & P>>({} as any)

export const useContext = <S, T>(context: React.Context<Partial<S> & Prop<T & P>>) => React.useContext<Partial<S> & Prop<T & P>>(context)


eg:

  • import { Provider ,useAppModel} from '@aks-dev/use-model'

export default (props) => {

  return (
    <Provider {...props} />
  )
}

const { model, setModel, initModel } = useAppModel.data

const { model, setModel } = useAppModel()

const { model, setModel } = useAppModel(({model})=>[model.backgroundColor])

  • import {createViewModel,createContext,useContext} from '@aks-dev/use-model'

const {setViewModel,viewModel} = useViewModel<Props>()

Package Sidebar

Install

npm i @aks-dev/use-model

Weekly Downloads

1

Version

1.0.20

License

MIT

Unpacked Size

10.1 kB

Total Files

11

Last publish

Collaborators

  • aks-dev