2017-05-02 4 views
0

Ich habe die folgende Syntax. Ich bin neu in der ES6-Syntax.fill() nicht unterstützt in IE11

const renderLoading =() => Array(20).fill('').map(() => <ExpampleLine/>); 

Der Befehl fill() wird im Internet Explorer nicht unterstützt. Gibt es irgendeine Arbeit für fill() allein oder sollte ich die ganze Syntax umschreiben. Brauchen Sie Hilfe mit der Syntax.

+1

Da Sie Babel verwenden für JSX Ich gehe davon aus, die Standard-Ansatz ist 'babel-polyfill' zu installieren und zu laden. – loganfsmyth

Antwort

1

Verwenden Sie ein polyfill:

if (!Array.prototype.fill) { 
    Object.defineProperty(Array.prototype, 'fill', { 
    value: function(value) { 

     // Steps 1-2. 
     if (this == null) { 
     throw new TypeError('this is null or not defined'); 
     } 

     var O = Object(this); 

     // Steps 3-5. 
     var len = O.length >>> 0; 

     // Steps 6-7. 
     var start = arguments[1]; 
     var relativeStart = start >> 0; 

     // Step 8. 
     var k = relativeStart < 0 ? 
     Math.max(len + relativeStart, 0) : 
     Math.min(relativeStart, len); 

     // Steps 9-10. 
     var end = arguments[2]; 
     var relativeEnd = end === undefined ? 
     len : end >> 0; 

     // Step 11. 
     var final = relativeEnd < 0 ? 
     Math.max(len + relativeEnd, 0) : 
     Math.min(relativeEnd, len); 

     // Step 12. 
     while (k < final) { 
     O[k] = value; 
     k++; 
     } 

     // Step 13. 
     return O; 
    } 
    }); 
} 

Wie hier vorgesehen: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/fill?v=example#Polyfill