代码之家  ›  专栏  ›  技术社区  ›  strumpy_strudel

添加了poly fill for.includes,但在一个区域仍然会出现错误,尽管在所有其他区域都已解决

  •  0
  • strumpy_strudel  · 技术社区  · 6 年前

    Object doesn't support property or method 'includes' 因为IE11不支持它:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Browser_compatibility

    if (!String.prototype.includes) {
      String.prototype.includes = function(search, start) {
        'use strict';
        if (typeof start !== 'number') {
          start = 0;
        }
    
        if (start + search.length > this.length) {
          return false;
        } else {
          return this.indexOf(search, start) !== -1;
        }
      };
    }
    

    我已经把它加到我的 index.jsx 已经解决了任何 .includes() 除了一个我不知道为什么。

    removeInfectedFiles() {
        let { filesAccepted } = this.state;
        const { infected } = this.props.upload.data;
    
        this.setState({
            ...this.state,
            filesAccepted: filesAccepted.filter(
                file => !infected.includes(file.key)
            )
        })
    
        var filesInfected = [];
    
        _.map(infected, i => {
            filesInfected.unshift(
                <p key={ i }>{ i }</p>
            )
        });
    
        this.setState({
            filesInfected
        })
    
    }
    

    除IE 11外,其他浏览器都可以使用。

    在将文件写入服务器之前,会对其进行病毒扫描。如果某个文件的服务器响应的是受感染的文件列表,则应该是“this.props.upload.data…”。。。显然不会把它们写到服务器上。这将从成功提交的文件列表中删除文件名。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Arup Rakshit    6 年前

    Array.prototype.includes() String.prototype.includes() infected 是一个数组。