请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

atwlee

注册会员

1

主题

4

帖子

11

积分

注册会员

积分
11
  • 41

    金币

  • 1

    主题

  • 4

    帖子

最新发帖
atwlee
注册会员   /  发表于:2024-5-16 11:18  /   查看:157  /  回复:6
3金币
本帖最后由 atwlee 于 2024-5-16 11:31 编辑

场景:
右键菜单的内容根据选择的行数据决定

操作步骤:
1、默认无查询内容,渲染菜单内容--查询0
image.png157376097.png


2、右键点击第N行数据,发起请求,响应菜单内容为查询1,但渲染结果为查询0

image.png846520995.png
3、右键点击第M行数据,发起请求,响应菜单内容为查询2,但渲染结果为查询1
image.png266593932.png

期望结果:
正常渲染

伪代码:

// 默认菜单
const [rightBtn, setRightBtn] = useState([{
        id: '0',
        text: '查询0',
}]);



/**
     * @description:  点击行的回调函数
     * @param {string} rowData
     * @param {*} columnName
     * @param {number} rowNumber 第N行
     * @return {*}
     */
const getMenuData = async (rowData: string[], columnName: [string[]], rowNumber: number) => {
// 模拟请求
    await new Promise<void>((resolve, reject) => {
        setTimeout(() => {
          if (rowNumber === 4)
            setRightBtn([
              {
                id: '1',
                text: '查询1',
              },
            ]);
          if (rowNumber === 5)
            setRightBtn([
              {
                id: '2',
                text: '查询2',
              },
            ]);
        }, 10);
      });
}



<Excel
       rightBtn={rightBtn}
      getMenuData={getMenuData}
/>



原因分析:
异步问题,数据未update,菜单已弹出,且dom不在更新




image.png653614806.png

最佳答案

查看完整内容

您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。 我上文中提到的自定义的意思是完全禁用SpreadJS原生的右键菜单,然后您自行设计右键菜单来实现您异步的需求。

6 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 11:18:38
来自 5#
您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。

我上文中提到的自定义的意思是完全禁用SpreadJS原生的右键菜单,然后您自行设计右键菜单来实现您异步的需求。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 13:37:31
2#
您好,SpreadJS原生的右键菜单不支持这样的异步操作,您可以替换SpreadJS原生的菜单,使用第三方或自定义的菜单来实现您的需求。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-16 14:13:09
3#
Joestar.Xu 发表于 2024-5-16 13:37
您好,SpreadJS原生的右键菜单不支持这样的异步操作,您可以替换SpreadJS原生的菜单,使用第三方或自定义的 ...

您说的自定义菜单是这个api吗https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.ContextMenu.MenuView
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-16 14:19:58
4#
atwlee 发表于 2024-5-16 14:13
您说的自定义菜单是这个api吗https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheet ...

我试了试,也还是不行。问题的原因是当我右键后菜单已经弹出来了,这时候对于菜单的任何操作都不会引起他的改变了,除非关闭后再次打开。
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-17 08:52:48
6#
Joestar.Xu 发表于 2024-5-16 17:35
您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。

我上文中提到的自定义的意思是完全 ...

好的,感谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-17 09:00:13
7#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部