美文网首页
React Native 跨平台多级列表开发

React Native 跨平台多级列表开发

作者: 龙仔仔0 | 来源:发表于2017-05-17 17:08 被阅读0次

最近一个月看了下reactnative,感觉以后是个趋势,一个人可以干两个人的活了,只是有点卡.其他还好.感觉老玩家玩一周就可以上手,上手容易,精通就另外讲.总体来说还是挺有意思的.

下面就一个多级列表+一行多项组件详细讲解下

像这样的二级列表,对应的数据结构如下:

首先定义datasource:

vargetSectionData= (dataBlob,sectionID)=>{

returndataBlob[sectionID];

};

vargetRowData= (dataBlob,sectionID,rowID)=>{

returndataBlob[sectionID+":"+rowID];

};

this.state= {

dataSource:newListView.DataSource({

getSectionData:getSectionData,

getRowData:getRowData,

sectionHeaderHasChanged:(s1,s2)=>s1!==s2,

rowHasChanged:(r1,r2)=>r1!==r2

}),

拿到数据之后


varjsonData=response.data.seconde_type_list;

//    定义变量

vardataBlob= {},

sectionIDs= [],

rowIDs= [];

for(vari=0;i

sectionIDs.push(i);

dataBlob[i] =jsonData[i].product_type_name;

rowIDs[i] = [];

varchilds=jsonData[i].child_type;

for(varj=0;j

rowIDs[i].push(j);

dataBlob[i+':'+j] =childs[j];

}

}

vards=this.state.dataSource.cloneWithRowsAndSections(dataBlob,sectionIDs,rowIDs)

this.setState({dataSource:ds});

渲染

render() {

// const name = this.props.name;

return(

showText={this.state.name}

tag={'mdzz'}

onClick={this._onBack}/>

dataSource={this.state.dataSource}

renderRow={this.renderRow.bind(this)}

contentContainerStyle={styles.listViewStyle}

renderSectionHeader={this.renderSectionHeader}

/>

);

}

渲染每行

renderRow(rowData) {

return(

{/**/}

{rowData.product_type_name}

);

}

渲染listview 头部

renderSectionHeader(sectionData,sectionId) {

return(

{sectionData}

);

}

注意listview头部的style要如下设置,每行3个,按照屏幕宽度平分,代码略

就可以实现android下LISTVIEW  嵌套GRIDVIEW效果

相关文章

网友评论

      本文标题:React Native 跨平台多级列表开发

      本文链接:https://www.haomeiwen.com/subject/dvwdxxtx.html