


Explication détaillée de la liste de liaisons gauche et droite de React-Native
Cet article vous présente principalement l'exemple de code de la liste de liaison gauche et droite React-Native. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
1 : Les listes chaînées gauche et droite sont très courantes au travail.
Aujourd'hui, je vais partager un exemple écrit par un collègue sur lequel je n'ai apporté que de simples modifications.
Remarque : Cet exemple doit modifier le code source, se référer à l'article 3 de cet article.
Deux : Codage
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 : Modifier le code source
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
Le chemin est dans node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js, à propos de la ligne 253, et est modifié comme suit :
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); }
Quatre :
1- : Code adresse github : https://github.com/erhutime/ React-Navigation-All
2- : Une fois le téléchargement terminé, modifiez index.ios.js : le fichier d'entrée est le suivant :
import App from './jscode/doubleList/App' AppRegistry.registerComponent('All', () => App);
5 : Le rendu est le suivant :
Recommandations associées :
Explication détaillée de l'utilisation de chacun et liste en PHP
À propos Explication détaillée de Mobile IndexList
Introduction à l'effet de Mobile IndexList
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Voyagez à travers l’immensité et embarquez pour le voyage vers l’ouest ! Aujourd'hui, Zhengtu IP a officiellement annoncé qu'elle lancerait une coopération transfrontalière avec l'animation CCTV « Journey to the West » pour créer conjointement une fête culturelle alliant tradition et innovation ! Cette coopération marque non seulement la coopération approfondie entre les deux grandes marques classiques nationales, mais démontre également les efforts inlassables et la persistance de la série Journey dans la promotion de la culture traditionnelle chinoise. Depuis sa naissance, la série Zhengtu est appréciée des joueurs pour son profond héritage culturel et son gameplay diversifié. En termes d'héritage culturel, la série Zhengtu a toujours maintenu le respect et l'amour pour la culture traditionnelle chinoise et a habilement intégré des éléments culturels traditionnels dans le jeu, apportant plus de plaisir et d'inspiration aux joueurs. L'animation CCTV "Voyage vers l'Ouest" est un classique qui a accompagné la croissance des générations.

Comment changer la version de React Native : 1. Entrez dans le répertoire du projet React Native et entrez "react-native --version" sur la ligne de commande ; 2. Vérifiez la version de React Native gérée par le package npm 3. Ouvrez le " package ; .json" dans le projet, modifiez le champ des dépendances et remplacez la version "react-native" par la version cible.

Opération de liste //Insérer une valeur à partir de l'en-tête de la liste. $ret=$redis->lPush('city','guangzhou');//Insérez une valeur à partir de la fin de la liste. $ret=$redis->rPush('city','guangzhou');//Obtient les éléments dans la plage spécifiée de la liste. 0 représente le premier élément de la liste, -1 représente le dernier élément et -2 représente l'avant-dernier élément. $ret=$redis->l

Le jeu mobile « Onmyoji » de NetEase a annoncé aujourd'hui que la collaboration limitée Onmyoji x Hatsune Miku débutera officiellement le 6 mars. Les SSR Hatsune Miku (CV : Saki Fujita) et SSR Kagamine Rin (CV : Asami Shimoda) arrivent à Heian Kyo ! L'événement de performance spéciale en ligne Linkage débutera officiellement dans le jeu le 9 mars ~

À cette date, "Backwater Cold" a officiellement annoncé qu'il lancerait une liaison avec KFC du 19 avril au 12 mai. Cependant, le contenu spécifique de la liaison a laissé de nombreuses personnes stupéfaites. Ils ont dit à plusieurs reprises "C'est embarrassant pour le ciel" et ". C'est important pour la société." mort" ! La raison réside dans le slogan de cet événement thématique. Les amis qui ont vu le lien KFC entre « Genshin Impact » et « Beng Tie » doivent avoir l'impression que « rencontrer des mondes différents et savourer des plats délicieux » est devenu une réalité dans « Ni Shui ». Han" Maintenant : criez au greffier : "Dieu enquête sur l'affaire, qui êtes-vous ?" Le greffier doit répondre : "Le poulet frit est une grosse affaire et il n'y a pas de place à l'erreur !" Guide de formation pour les employés : Ne riez jamais ! De plus, cette collaboration a également organisé un concours de danse. Si vous vous rendez au magasin à thème et exécutez le mouvement de danse « Danse quand tu entends 'Ji' », vous pouvez également vous procurer un petit pupitre à musique à bascule. Embarrassant, tellement embarrassant ! Mais c'est ce que je veux

Retrouvailles classiques, inversion du temps et de l’espace. Le jeu mobile "Dragon 2" et le film classique "Westward Journey" devraient sortir conjointement le 11 avril ! Cela coïncide avec la célébration de l'anniversaire du jeu mobile "Dragon 2" Nous invitons tout le monde à revivre les souvenirs classiques et une fois. assistez à nouveau à la bataille entre Zhizunbao et Zixia jusqu'à la mort. L'histoire légendaire de Chongqing. Il doit y avoir des nuages colorés de bon augure, et il doit y avoir une armure dorée et des vêtements sacrés. Lorsque la phrase « Prajna Paramita » résonnera dans vos oreilles, penserez-vous à la larme que Zixia a laissée au cœur du Trésor Suprême. mille ans, mais il est impossible d'échapper au sort du destin. Même s’il n’y a pas de retour, mon amour ne changera jamais jusqu’à la mort. Les apparitions de la collaboration Westward Journey [One Eye for Ten Thousand Years] et [God's Will] seront lancées simultanément avec la version anniversaire. J'espère que vous pourrez porter l'armure dorée ou rencontrer votre propre héros sans précédent et revenir à votre jeunesse la plus passionnée. Cinq cents ans de protection, le véritable amour jusqu'à la mort, dit par hasard quand j'ai rencontré Luoyang ce jour-là

1:JSONArray转ListJSONArray字符串转List//初始化JSONArrayJSONArrayarray=newJSONArray();array.add(0,"a");array.add(1,"b");array.add(2,"c") ;Listlist=JSONObject.parseArray(array.toJSONString(),String.class);System.out.println(list.to

NetEase Games a annoncé aujourd'hui que « Diablo : Immortal » avait décidé de s'associer à « Legend of Sword and Fairy ». Le 24 avril, « One Sword is Happy » ouvre une nouvelle ère de culture immortelle ! L'un est un classique de la fantaisie occidentale et l'autre est la mémoire éternelle des immortels orientaux. L'univers sombre et l'épée des fées sont entrelacés dans le temps et l'espace, et les deux principales IP travaillent ensemble pour tuer les démons. Le 24 avril, la légende immortelle de la justice et de la chevalerie sera mise en scène à Sanctuary !
