项目开发小记录

46 阅读1分钟

1、sessionStorage同一个网页下共享还是不共享

不同标签页之间的sessionStorage共享还是不共享,取决于操作方式,如果在同一个网站下,新标签页是从a页面发起创建并跳转的,新标签页跟a页面是共享sessionStorage的。如果新标签页是用户自己创建并输入网址进行跳转的,会初始化一个新的session,即使同一个网页下,他们也不共享sessionStorage。

2、子组件被connect高阶组件包裹,父组件用ref拿取不到其实例

1)当react-redux < 6

子组件使用withRef:true

connect(mapStateToProps, mapDispatchToProps, null ,{withRef:true})(ExampleComp)

父组件取值的时候,一定加上getWrappedInstance(),才能调取子组件的实例

this.aRef.current.getWrappedInstance().value

2)当react-redux > 6

子组件使用forwardRef:true

connect(mapStateToProps, mapDispatchToProps, null ,{forwardRef:true})(ExampleComp)

父组件取值

this.aRef.current.value

3、接口返回流文件时,前端怎么触发下载并不乱码

以下代码可以触发下载

fetchExcel().then(res => {
    const a = document.createElement('a'); // 创建a标签
    const blob = new Blob([res], {
                   type: 'application/vnd.ms-excel;charset=UTF-8',
              }); // 拿取接口的流数据
    a.style.display = 'none';
    a.href = URL.createObjectURL(blob); // 创建新的URL表示指定的blob对象
    a.download = riskTenant + '模板' + '.xls'; // 指定下载文件名
    a.click(); // 触发下载
    URL.revokeObjectURL(a.href); // 释放URL对象
})

下载文件打开excel会出现乱码,在请求的config中设置responseType:‘blob’