重新加载ListView不工作React Native
发布时间:2020-12-15 05:04:46 所属栏目:百科 来源:网络整理
导读:重新措辞我的问题……(用单独的课程测试) 我试图在按下按钮时使用随机数组重新加载listview.但它不起作用!尝试使用以下LOC刷新数据源: _buttonPressed() { this.setState({ dataSource: this.state.dataSource.cloneWithRows(this._randomArray()),}); }_r
重新措辞我的问题……(用单独的课程测试)
我试图在按下按钮时使用随机数组重新加载listview.但它不起作用!尝试使用以下LOC刷新数据源: _buttonPressed() { this.setState({ dataSource: this.state.dataSource.cloneWithRows(this._randomArray()),}); } _randomArray() { var jsonRes; switch(this.getRandomInt()) // number returned is valid. I checked { case 1: { jsonRes = '[' + '{ "firstName":"Michel","lastName":"John","age":18},' + '{ "firstName":"Richard","lastName":"Joe","age":20 },' + '{ "firstName":"James","lastName":"Henry","age":15 },' + '{ "firstName":"e","lastName":"u","age":15 }]'; break; } case 2: { jsonRes = '[' + '{ "firstName":"bacde",' + '{ "firstName":"bacde",' + '{ "firstName":"ebacde","age":15 }]'; break; } case 3: { jsonRes = '[' + '{ "firstName":"mmmmm",' + '{ "firstName":"mmmmm",' + '{ "firstName":"etttttt","age":15 }]'; break; } default: { jsonRes = '[' + '{ "firstName":"dddd",' + '{ "firstName":"dddd",' + '{ "firstName":"ehhgh","age":15 }]'; break; } } var myObject = eval('(' + jsonRes + ')'); return myObject; } 我已经看过React Native的示例listview项目.他们正在使用dataSource.cloneWithRows来实现此目的.不知道我错过了什么小事.请帮我解决这个问题…谢谢!
我已经能够成功调试该问题.我刚刚打开了ListViewDataSource.js的源代码,并跟踪了沿不同函数传递的datablob变量值.
方法_calculateDirtyArrays标识哪些行已更改且需要更新.为此,三个条件中的一个必须匹配一行. ........ // dirty if the section is new,row is new or _rowHasChanged is true dirty = !prevSectionsHash[sectionID] || !prevRowsHash[sectionID][rowID] || this._rowHasChanged( this._getRowData(prevDataBlob,sectionID,rowID),this._getRowData(this._dataBlob,rowID) ); this._dirtyRows[sIndex].push(!!dirty); ........ _rowHasChangedis传递给List Datasource构造函数的那个??. var dataSource = new ListView.DataSource( {rowHasChanged: (r1,r2) => r1.guid !== r2.guid}); 在我的情况下这是错误的,因为在相应的数据更改时应该更改行.我根据我的要求改变了上述条件. var dataSource = new ListView.DataSource( { rowHasChanged: function(r1,r2) : bool { return ( (r1["firstName"] !== r2["firstName"]) || (r1["lastName"] !== r2["lastName"]) || (r1["age"] !== r2["age"]) ); } }); 瞧!它现在完美无缺.希望它将来有助于某人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |