首页 > 其他 > 详细

ant.design-pro使用useModel传递全局数据

时间:2021-09-02 00:43:33      阅读:34      评论:0      收藏:0      [点我收藏+]
antpro 的umi内置的useModel也可以实现全局数据流

示例图: 三个组件的数量可以共享
技术分享图片
 
使用方法
在src目录下models文件夹,新建一个文件,文件名就是引入的数据对象

1.
技术分享图片
 
2.
技术分享图片
 
完整代码
/src/models/product.ts
import { useState, useCallback } from ‘react‘

export default () => {
  const [count, setCount] = useState(0)

  // 增加数量
  const addCount = useCallback((val: number = 1) => {
    setCount((pre) => { return pre + val })
  }, [])

  // 减少数量
  const substractCount = useCallback((val: number = 1) => {
    setCount((pre) => { return pre - val })
  }, [])

  return {
    count,
    addCount,
    substractCount
  }
}
组件中使用
组件1
/src/pages/components1
import React from ‘react‘;
import { useModel } from ‘umi‘;
import { Descriptions, Button } from ‘antd‘;

export default () => {
  const { count, addCount, substractCount } = useModel(‘product‘, model => (
    { 
      count: model.count, 
      addCount: model.addCount,
      substractCount: model.substractCount,
    }
  ))

  return <>
    <h2>页面一</h2>
    <Descriptions title="商品信息">
      <Descriptions.Item label="名称">T-shirt</Descriptions.Item>
      <Descriptions.Item label="价格">799</Descriptions.Item>
      <Descriptions.Item label="数量">{count}</Descriptions.Item>
    </Descriptions>
    <h2>修改数据</h2>
    <Button type="primary" onClick={() => addCount()} style={{marginRight: ‘10px‘}}>
      数量+1
    </Button>
    <Button type="primary" onClick={() => substractCount()}>
      数量-1
    </Button>
  </>
};
组件2
/src/pages/components2
import React from ‘react‘;
import { useModel } from ‘umi‘;
import { Descriptions, Button } from ‘antd‘;

export default () => {
  const { count, addCount, substractCount } = useModel(‘product‘, model => (
    { 
      count: model.count, 
      addCount: model.addCount,
      substractCount: model.substractCount,
    }
  ))

  return <>
    <h2>页面二</h2>
    <Descriptions title="商品信息">
      <Descriptions.Item label="名称">T-shirt</Descriptions.Item>
      <Descriptions.Item label="价格">799</Descriptions.Item>
      <Descriptions.Item label="数量">{count}</Descriptions.Item>
    </Descriptions>
    <h2>修改数据</h2>
    <Button type="primary" onClick={() => {addCount(2)}} style={{marginRight: ‘10px‘}}>
      数量+2
    </Button>
    <Button type="primary" onClick={() => {substractCount(2)}}>
      数量-2
    </Button>
  </>
};

 

ant.design-pro使用useModel传递全局数据

原文:https://www.cnblogs.com/steamed-twisted-roll/p/15207327.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!