Fre*_*ddy 12 javascript react-native react-native-android
编译到android并通过Store下载后,出现错误:
"TypeError: Invalid attempt to spread non-iterable instance"
Run Code Online (Sandbox Code Playgroud)
但是使用“react-native run-android”不会产生任何错误消息,因此我找不到调试它的好方法。
fetch(url)
.then(response => response.json())
.then(response => {
if (this._mounted) {
// let dataSource = this.state.articlesDataSource.cloneWithRows(response.data || [])
//var rowCount = dataSource.getRowCount();
var rowCount = Object.keys(response.data).length;
if (refresh == true) {
prevData = {};
} else {
prevData = this.state.articlesData;
}
if (propSearch == "" || propSearch == null) {
newArticlesData = [...prevData, ...response.data];
} else {
newArticlesData = response.data;
}
if (response.meta.next_page != null) {
var rowCount = true;
} else {
var rowCount = Object.keys(newArticlesData).length;
}
if (this._mounted) {
this.setState({
isLoading: false,
//articlesDataSource: this.state.articlesDataSource.cloneWithRows(response.data),
articlesData: newArticlesData,
nextPage: response.meta.next_page,
fetchUrl: url,
rowCount: rowCount
});
}
}
})
.catch(error => {
this.setState({
errorFound: true,
errorMassage: error,
isLoading: false
});
});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
Dre*_*ese 17
这是因为它是运行时错误,而不是“编译时”错误。
是否有与错误相关的行号?基于这个问题是关于传播经营者,我会以为这是这一行:newArticlesData=[...prevData,...response.data]。我假设您prevData是可迭代的,但是您的响应数据是吗?试试newArticlesData=[...prevData, response.data]?
以下是无效传播运算符使用的示例:
function trySpread(object) {
let array;
try {
array = [...object];
console.log('No error', array);
} catch(error) {
console.log('error', error);
}
}
// error
trySpread({});
trySpread({foo: 'bar'});
trySpread(4);
// no error
trySpread([]);
trySpread(['foobar']);
trySpread('foobar');Run Code Online (Sandbox Code Playgroud)
mau*_*iya 11
我仅在发布 android 版本中遇到此崩溃。发布 ios 构建和 android 调试构建完美运行。
花了几个小时后从互联网上找到了解决方案。
编辑您的.babelrc并将以下内容添加到您的插件中
[
"@babel/plugin-transform-spread",
{
"loose": true
}
]
Run Code Online (Sandbox Code Playgroud)
所以这是我的.babelrc文件
{
"presets": [
"module:metro-react-native-babel-preset"
],
"plugins": [
"syntax-trailing-function-commas",
"@babel/plugin-transform-flow-strip-types",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-regenerator",
"@babel/plugin-transform-async-to-generator",
"@babel/plugin-transform-runtime",
[
"@babel/plugin-transform-spread",
{
"loose": true
}
]
],
"sourceMaps": true
}
Run Code Online (Sandbox Code Playgroud)
我希望这个答案可以帮助某人并节省几个小时:)