发现项目中有很多导出方法,需要频繁使用 location api 跳转,封装一个下载方法通过传参调用。

import { isEmpty, reduce, endsWith, isNil } from 'lodash'

/**
 * 下载文件
 * @param { String } url 访问地址
 * @param { Object } params 参数
 */
export const downloadFile = (url, params = {}) => {
  if (!isEmpty(params)) {
    const queryStr = reduce(
      params,
      (ary, value, key) => {
        return [...ary, `${encodeURIComponent(key)}=${encodeURIComponent(value)}`]
      },
      []
    ).join('&')
    url = endsWith('url', '?') ? `${url}${queryStr}` : `${url}?${queryStr}`
  }
  !isNil(window.location) && (window.location.href = url)
}