


Ausführliche Erläuterung der linken und rechten Verknüpfungsliste von React-Native
Dieser Artikel stellt Ihnen hauptsächlich den Beispielcode der linken und rechten Verknüpfungsliste von React-Native vor. Ich denke, er ist ziemlich gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
1: Links- und rechtsverknüpfte Listen kommen bei der Arbeit sehr häufig vor.
Heute werde ich ein Beispiel teilen, das von einem Kollegen geschrieben wurde. Ich habe nur einfache Änderungen vorgenommen.
Hinweis: In diesem Beispiel muss der Quellcode geändert werden, siehe Artikel 3 dieses Artikels.
Zwei: Codierung
ParcelPage.js:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, FlatList, SectionList, Dimensions, TouchableOpacity, Image, } from 'react-native'; import ParcelData from './ParcelData.json' var { width, height } = Dimensions.get('window'); let Headers = []; export default class ParcelPage extends Component { static navigationOptions = ({ navigation }) => ({ headerTitle : '联动List', }); componentDidMount() { ParcelData.map((item, i) => { Headers.push(item.section); }); }; componentWillUnmount() { Headers = []; }; renderLRow = (item) => { return ( <TouchableOpacity style={[ styles.lItem, {backgroundColor: item.index == this.state.cell ? 'white' : null} ]} onPress={()=>this.cellAction(item)}> <Text style={styles.lText}>{ item.item.section }</Text> </TouchableOpacity> ) }; cellAction = (item) => { if (item.index <= ParcelData.length) { this.setState({ cell : item.index }); if (item.index > 0) { var count = 0; for (var i = 0; i < item.index; i++) { count += ParcelData[ i ].data.length + 1 } this.refs.sectionList.scrollToIndex({ animated : false, index : count }) } else { this.refs.sectionList.scrollToIndex({ animated : false, index : 0 }); } } }; itemChange = (info) => { let section = info.viewableItems[ 0 ].section.section; if (section) { let index = Headers.indexOf(section); if (index < 0) { index = 0; } this.setState({ cell : index }); } }; state = { cell : 0 }; renderRRow = (item) => { return ( <View style={ styles.rItem }> <Image style={ styles.icon } source={{ uri : item.item.img }}/> <View style={ styles.rItemDetail }> <Text style={ styles.foodName }>{ item.item.name }</Text> <View style={ styles.saleFavorite }> <Text style={ styles.saleFavoriteText }>{ item.item.sale }</Text> <Text style={ [styles.saleFavoriteText,{ marginLeft:15 }]}>{ item.item.favorite }</Text> </View> <Text style={ styles.moneyText }>¥{ item.item.money }</Text> </View> </View> ) }; sectionComp = (section) => { return ( <View style={{height:30,backgroundColor:'#DEDEDE',justifyContent:'center',alignItems:'center'}}> <Text >{section.section.section}</Text> </View> ) }; separator = () => { return ( <View style={{height:1,backgroundColor:'gray'}}/> ) }; render() { return ( <View style={ styles.container }> <FlatList ref='FlatList' style={ styles.leftList } data={ ParcelData } renderItem={(item) => this.renderLRow(item)} ItemSeparatorComponent={ () => this.separator() } keyExtractor={ (item) => item.section } /> <SectionList ref='sectionList' style={ styles.rightList } renderSectionHeader={ (section) => this.sectionComp(section) } renderItem={ (item) => this.renderRRow(item) } sections={ ParcelData } keyExtractor={ (item) => item.name } onViewableItemsChanged={ (info) => this.itemChange(info) } /> </View> ); } } const styles = StyleSheet.create({ container : { flexDirection : 'row' }, leftList : { width : 1 * width / 4, backgroundColor : '#E9E9EF' }, lItem : { minHeight : 44, justifyContent : 'center', }, lText : { marginLeft : 10, marginRight : 10, fontSize : 16, }, rightList : { width : 3 * width / 4 }, rItem : { flexDirection : 'row' }, rItemDetail : { flex : 1, marginTop : 10, marginLeft : 5 }, icon : { height : 60, width : 60, marginTop : 10, marginBottom : 10, marginLeft : 8, borderWidth : 1, borderColor : '#999999' }, foodName : { fontSize : 18, }, saleFavorite : { flexDirection : 'row', marginTop : 5, marginBottom : 5, }, saleFavoriteText : { fontSize : 13, }, moneyText : { color : 'orange' }, });
ParcelData.js
[ { "section" : "热销", "data" : [ { "name" : "蟹黄汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "20", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "小馄饨", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "蟹黄汤包+牛杂粉丝汤套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "35", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "鸭血粉丝汤", "sale" : "月售875", "favorite" : "赞31", "money" : "15", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "介绍我们", "data" : [ { "name" : "慎用差评!任何问题联系我们就可解决哦", "sale" : "月售1", "favorite" : "赞0", "money" : "0", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" } ] }, { "section" : "折扣套餐", "data" : [ { "name" : "特色蟹黄汤包+鸭血粉丝汤+果汁套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "50", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "蟹黄汤包+牛杂粉丝汤套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "35", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "蟹黄汤包+南瓜粥+果汁套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "金牌蟹黄汤包+紫米粥+柠檬果汁套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "台式卤肉饭+南瓜粥套餐", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "纯手工汤宝", "data" : [ { "name" : "金牌蟹黄汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "蟹庭丰特色蟹黄汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "蟹黄汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "干贝汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "鲍鱼汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "全家福汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "虾仁汤包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "汤、粥类", "data" : [ { "name" : "紫米粥", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "金丝南瓜粥", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "小米粥", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "白粥", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "面食类", "data" : [ { "name" : "鸡汤面", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "红烧小排面", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "红烧牛肉面", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "调味小菜", "data" : [ { "name" : "肉松", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "辣椒包", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "泡菜", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "酱黄瓜", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "萝卜干", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] }, { "section" : "饮料", "data" : [ { "name" : "可乐", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/__39230311__3449301.jpg" }, { "name" : "雪碧", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p1.meituan.net/deal/849d8b59a2d9cc5864d65784dfd6fdc6105232.jpg" }, { "name" : "王老吉", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" }, { "name" : "橙汁", "sale" : "月售875", "favorite" : "赞31", "money" : "10", "img":"http://p0.meituan.net/deal/ed3025663342b126eaae24764704b017136487.jpg" } ] } ]
3: Ändern Sie den Quellcode
1-:SectionList
node_modules/react-native/Libraries/Lists/SectionList.js,代码格式化后大概在187行的位置,修改如下 class SectionList<SectionT: SectionBase<any>> extends React.PureComponent<DefaultProps, Props<SectionT>, void> { props: Props<SectionT>; static defaultProps: DefaultProps = defaultProps; render() { const List = this.props.legacyImplementation ? MetroListView : VirtualizedSectionList; return <List ref={this._captureRef} {...this.props} />; } _captureRef = (ref) => { this._listRef = ref; }; scrollToIndex = (params: { animated?: ?boolean, index: number, viewPosition?: number }) => { this._listRef.scrollToIndex(params); } }
2-:VirtualizedSectionList
Der Pfad befindet sich in node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js, etwa Zeile 253, und ist wie folgt geändert:
render() { return <VirtualizedList ref={this._captureRef} {...this.state.childProps} />; } _captureRef = (ref) => { this._listRef = ref; }; scrollToIndex = (params: { animated?: ?boolean, index: number, viewPosition?: number }) => { this._listRef.scrollToIndex(params); }
Vier:
1-: Code-Github-Adresse: https://github.com/erhutime/ React-Navigation-All
2-: Nachdem der Download abgeschlossen ist, ändern Sie index.ios.js: Die Eintragsdatei lautet wie folgt:
import App from './jscode/doubleList/App' AppRegistry.registerComponent('All', () => App);
5: Die Darstellung ist wie folgt:
Verwandte Empfehlungen:
Detaillierte Erläuterung der jeweiligen Verwendung und Liste in PHP
Über Ausführliche Erklärung von IndexList auf mobilen Endgeräten
Einführung in die Wirkung von IndexList auf mobilen Endgeräten
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der linken und rechten Verknüpfungsliste von React-Native. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Reisen Sie durch die Weiten und begeben Sie sich auf die Reise in den Westen! Heute gab Zhengtu IP offiziell bekannt, dass es eine grenzüberschreitende Zusammenarbeit mit dem CCTV-Animationsfilm „Journey to the West“ starten wird, um gemeinsam ein kulturelles Fest zu schaffen, das Tradition und Innovation vereint! Diese Zusammenarbeit markiert nicht nur die intensive Zusammenarbeit zwischen den beiden großen inländischen Klassikmarken, sondern zeigt auch die unermüdlichen Bemühungen und die Beharrlichkeit der Journey-Reihe bei der Förderung der traditionellen chinesischen Kultur. Seit ihrer Geburt ist die Zhengtu-Serie bei Spielern wegen ihres tiefgreifenden kulturellen Erbes und ihres abwechslungsreichen Gameplays beliebt. Was das kulturelle Erbe angeht, hat die Zhengtu-Reihe stets Respekt und Liebe für die traditionelle chinesische Kultur bewahrt und traditionelle kulturelle Elemente geschickt in das Spiel integriert, was den Spielern mehr Spaß und Inspiration bringt. Der CCTV-Animationsfilm „Reise in den Westen“ ist ein Klassiker, der das Heranwachsen von Generationen begleitet hat.

So ändern Sie die Version von React Native: 1. Geben Sie das React Native-Projektverzeichnis ein und geben Sie „react-native --version“ in die Befehlszeile ein. 2. Überprüfen Sie die vom npm-Paket verwaltete React Native-Version .json“-Datei im Projekt, ändern Sie das Abhängigkeitsfeld und ändern Sie die „react-native“-Version in die Zielversion.

Listenoperation //Einen Wert vom Kopf der Liste einfügen. $ret=$redis->lPush('city','guangzhou');//Fügen Sie einen Wert vom Ende der Liste ein. $ret=$redis->rPush('city','guangzhou');//Erhalten Sie die Elemente im angegebenen Bereich der Liste. 0 steht für das erste Element der Liste, -1 für das letzte Element und -2 für das vorletzte Element. $ret=$redis->l

Das Mobilspiel „Onmyoji“ von NetEase gab heute bekannt, dass die begrenzte Zusammenarbeit zwischen Onmyoji und Hatsune Miku am 6. März offiziell beginnen wird. Die auf Zusammenarbeit beschränkten SSR Hatsune Miku (Lebenslauf: Saki Fujita) und SSR Kagamine Rin (Lebenslauf: Asami Shimoda) kommen nach Heian Kyo! Das Linkage-Online-Sonderleistungsevent wird offiziell am 9. März im Spiel starten

An diesem Tag gab „Backwater Cold“ offiziell bekannt, dass es vom 19. April bis 12. Mai eine Verbindung mit KFC starten wird. Der konkrete Inhalt der Verbindung hat jedoch viele Menschen verblüfft. Sie sagten wiederholt: „Es ist zum Himmel peinlich.“ Es ist wichtig für die Gesellschaft. „gestorben“! Der Grund liegt im Slogan dieser Themenveranstaltung. Freunde, die die KFC-Verbindung von „Genshin Impact“ und „Beng Tie“ gesehen haben, müssen den Eindruck haben, dass „die Begegnung mit einer anderen Welt und der Genuss köstlichen Essens“ in „Ni Shui“ zur Realität geworden ist Han“ Jetzt: Rufen Sie dem Sachbearbeiter zu: „Gott untersucht den Fall, wer sind Sie?“ Der Sachbearbeiter muss antworten: „Brathähnchen sind ein großes Geschäft, und es gibt keinen Raum für Fehler!“ Schulungsleitfaden für Mitarbeiter: Lache niemals! Darüber hinaus fand im Rahmen dieser Zusammenarbeit ein Tanzwettbewerb statt. Wenn Sie in den Themenladen gehen und die Tanzbewegung „Tanzen Sie, wenn Sie „Ji“ hören“ ausführen, können Sie auch einen kleinen rockigen Notenständer erwerben. Peinlich, so peinlich! Aber das ist es, was ich will

Klassisches Wiedersehen, das Zeit und Raum umkehrt. Das Handyspiel „Dragon 2“ und der Filmklassiker „Westward Journey“ sollen gemeinsam am 11. April erscheinen! Es fällt mit der Jubiläumsfeier des Handyspiels „Dragon 2“ zusammen. Wir laden alle ein, die klassischen Erinnerungen noch einmal zu erleben Erleben Sie erneut den Kampf zwischen Zhizunbao und Zixia bis zum Tod. Die legendäre Geschichte von Chongqing. Es muss bunte, glückverheißende Wolken geben, und es muss goldene Rüstungen und heilige Kleider geben, wenn der Satz „Prajna Paramita“ in Ihren Ohren widerhallt, werden Sie an die Träne denken, die Zixia im Herzen des Höchsten Schatzes hinterlassen hat? Tausend Jahre, aber es ist unmöglich, dem Schicksal des Schicksals zu entkommen. Auch wenn es keine Rückkehr gibt, wird sich meine Liebe bis zum Tod nie ändern. Die Westward Journey-Kollaborationsauftritte [One Eye for Ten Thousand Years] und [God's Will] werden gleichzeitig mit der Jubiläumsversion veröffentlicht. Ich hoffe, dass Sie die goldene Rüstung tragen oder Ihren eigenen unvergleichlichen Helden treffen und zu Ihrer leidenschaftlichsten Jugend zurückkehren können. Fünfhundert Jahre Schutz, wahre Liebe bis zum Tod, sagte ich zufällig, als ich Luoyang an diesem Tag traf

1: JSONArray-Liste. ;Listlist=JSONObject.parseArray(array.toJSONString(),String.class);System.out.println(list.to

NetEase Games gab heute bekannt, dass „Diablo: Immortal“ beschlossen hat, sich mit „Legend of Sword and Fairy“ zu verbinden. Am 24. April eröffnet „One Sword is Happy“ eine neue Ära der unsterblichen Kultivierung! Das eine ist ein Klassiker der westlichen Fantasy, das andere ist die ewige Erinnerung an die Unsterblichen des Ostens. Das dunkle Universum und das Feenschwert sind zeitlich und räumlich miteinander verbunden, und die beiden großen IPs arbeiten zusammen, um Dämonen zu töten. Am 24. April wird die unsterbliche Legende von Gerechtigkeit und Ritterlichkeit in Sanctuary aufgeführt!
