本帖最后由 Richard.Huang 于 2024-5-29 11:58 编辑
产品:SpreadJS
版本:V15.2.5
场景:
右键菜单的内容根据选择的行数据决定
操作步骤:
1、默认无查询内容,渲染菜单内容--查询0
2、右键点击第N行数据,发起请求,响应菜单内容为查询1,但渲染结果为查询0
3、右键点击第M行数据,发起请求,响应菜单内容为查询2,但渲染结果为查询1
期望结果:
正常渲染
伪代码:
- // 默认菜单
- 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不在更新 |