Data flow solution based on hooks and umi plugin.
# or yarn
$ npm install @umijs/plugin-model --save
Getting started in 3 steps.
export default {
plugins: [['@umijs/plugin-model', options]],
};
// src/models/count.ts
import { useState } from 'react';
export default () => {
const [count, setCount] = useState(0);
const increment = () => setCount(c => c + 1);
const decrement = () => setCount(c => c - 1);
return { count, increment, decrement };
};
import React from 'react';
import { useModel } from 'umi';
export default () => {
const { count } = useModel('count');
return <>{count}</>;
};
Full example can find in ./example.
Add extra models in plugins.
// use custom namespace
// @@ is used for internal models
api.register('addExtraModels', () => [
{
absPath: join(paths.absTmpDirPath, 'init', 'user.tsx'),
namespace: '@@user',
},
{
absPath: join(paths.absTmpDirPath, 'init', 'access.tsx'),
namespace: '@@access',
},
]);
// use default namespace
api.register('addExtraModels', () => [
join(paths.absTmpDirPath, 'init', 'a.tsx'),
join(paths.absTmpDirPath, 'init', 'b.tsx'),
]);
MIT