除了react-antd中使用umi的Link路由组件跳转页面还可以使用history来跳转页面
但是在这里Link好像并行不通
场景:点击按钮先去调接口拿到接口里返回的id再跳转页面
跳转页面要携带参数:接口里返回的id,如果没有拿到id则不跳转
解决方法是用history
import { history } from 'umi';
const onAddBudgetRevenue = () = > {
addBudgetRevenue() //函数内调接口 获取接口里面的id setId
if(budgetRevenueId){
history.push({
pathname:`/xxxx/xxxx/xxxxx` //路径
search: stringify({ //携带参数
id: budgetRevenueId
})
})
}
}
原先是这样写的,因为在model里面调接口 setState方法是异步函数 导致第一次点击按钮获取不到返回的id 所以根本跳转不了页面
-------------------------------------------------------------------------------------------------------------
改用方法:给按钮单独写方法去调接口拿id 之后用useEffect来监听id 获取到id就跳转页面
import React, { useEffect } from "react";
import { history } from 'umi';
useEffect(() => {
add()
}, [budgetId]) // 监听id
const onAddBudgetRevenue = () =>{
addBudgetRevenue() //调接口拿id setBudgetId
}
const add = () => {
if (budgetId) {
setBudgetId(undefined)
history.push({
pathname: '/xxxx/xxx/xxx', // 跳转路径
search: stringify({
id: budgetId
})
})
}
}
return(
<Button onClick={onAddBudgetRevenue}>新增项目</Button>
)
这样就实现啦