我正在基于react-native
编写应用程序,我们知道我们可以在该项目和所有JavaScript
项目中使用react
代码。
但是当我使用下面的代码时,编译器将 Error 返回给模拟器:
const mixer = (...arg) => arg.flat(9);
错误是: flat不起作用
为什么在react-native
中没有定义它,但是在浏览器中运行良好?
答案 0 :(得分:1)
React Native使用JavaScriptCore引擎,该引擎使用ECMA-262规范。该规范清楚地表明.flat不被支持,并且不包含在babel的转换列表中。
自己编写或安装npm上可用的众多垫片之一。
答案 1 :(得分:0)
代替arr.flat
尝试使用此功能
function flatten(arr) {
return Array.prototype.concat(...arr);
}
flatten(arr)
答案 2 :(得分:0)
您的平台支持它吗? Array.prototype.flat
链接还包含使用reduce和concat以及非递归的实现。
答案 3 :(得分:0)
const mixer = (...arg) => arg.flat(9);
错误是: flat不起作用
为什么在
react-native
中没有定义它,但是在浏览器中运行良好?
我的第一个猜测是react-native
编译器无法正确解释您的...arg
,从而导致对象不是Array
类型。您正在尝试呼叫.flat
的一部分Array.prototype
。由于arg
的类型不能为Array
,因此无法找到.flat
,从而导致该错误。
我不确定。您可以检查对象类型吗?您可以在下面临时在此处使用此代码。
const mixer = (...arg) => { console.log(typeof arg); return []; }
说什么?如果显示Array
,则您可能在尚不支持该功能的平台上运行。使用polyfill可以在这里解决您的问题。