Hey, j'essaie d'écrire plusieurs instructions conditionnelles pour le style basé sur la longueur de la matrice sélectionnée. Malheureusement, il ne reconnaît pas la syntaxe et me donnant l'erreur sur le titre. Je veux juste que cela reconnaisse le tableau concerné depuis que je suis en train d'écrire une plate-forme pour plusieurs articles de réseau utilisateur. Quelqu'un peut-il aider, s'il vous plaît?
Code ci-dessous P>
import React, { Component } from 'react'; import { View, Text, FlatList, Image, ImageBackground, PixelRatio, Platform, UIManager, TouchableOpacity, LayoutAnimation } from 'react-native'; import {widthPercentageToDP as wp, heightPercentageToDP as hp} from 'react-native-responsive-screen' import DropDownItem from 'react-native-drop-down-item'; export default class App extends Component { constructor (props) { super(props) this.state ={ users: [{ uses1: '- Bottles', uses2: '- Cans', uses3: '- Jars', expanded: false }, { uses1: '- Grays', uses2: '- Lines', uses3: '- Interior', expanded: false }, { uses1: '- Live', uses2: '- Cutter', uses3: '- Riser', expanded: false }, ] } if (Platform.OS === 'android') { UIManager.setLayoutAnimationEnabledExperimental(true); } } changeLayout = ({index}) => { LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut); this.setState(({ users }) => ({ users: users.map((s, idx) => idx === index ? {...s, expanded: !this.state.users[index].expanded} : {...s, expanded: false}) })); console.log(this.state.users[index].expanded) }; //if uses1 + uses1.left + uses2 + uses2.left + uses3 + use3.left <=x then stay up or uses 3 go down getUses2style(index){ if(this.state.users[index].uses1.length<=12) {return{ fontSize: 17, left:100, top:-125, color: 'white', padding: 10}} else if(12<this.state.users[index].uses1.length<=22) {return{ fontSize: 17, left:200, top:-125, color: 'white', padding: 10}} } render() { //create an expand state for all materials in this.state return ( // Remain Category image and CSS // add search bar <View style={{ backgroundColor:'#262A2C', flex:1 }}> <FlatList style={{marginTop:80,}} data={this.state.users} renderItem={({ item, index }) => ( <View> <ImageBackground source={require('./Icons/error.png')} //pay FlatIcon or design personal one style={{ resizeMode: 'contain', position:'relative', width: wp('100%'), left: wp('0%'), borderBottomWidth: 1, borderBottomColor: 'grey', padding: hp('6%'), }} > <View style={{ flex:1, height:hp('19%'), width: wp('100%'), //height:hp('21%'), borderBottomColor: 'grey', }}> <Text style={{ fontWeight: 'bold', fontSize: 22, left:item.name.length<=5 ? wp('32.5%'):wp('27.5%'), top:hp('-9.5%'), }}> Stands </Text> <Text style={{ fontWeight: 'bold', fontSize: 25, top: hp('-25%'), left:wp('80%') }}> History </Text> </View> </ImageBackground> <TouchableOpacity activeOpacity={0.8} onPress={() => { this.changeLayout({index}) }} style={{ padding: 10, backgroundColor:'black', left:wp('-10.9%'), top:hp('0%'), width: wp('120%'), height:hp('5%')}}> <Image style={{ width:wp('9%'), height:hp('4.5%'), tintColor:'white', left:250, top:-10 //tintColor:'#81F018' }} source={item.expanded ? require('./Icons/arrowDown.png') : require('./Icons/arrowUp.png') }/> </TouchableOpacity> <View style={{ height: item.expanded ? null : 0, overflow: 'hidden', backgroundColor:'black' }}> <Text style={{ fontSize: 17, left:150, top:-10, color: 'turquoise', padding: 10}}> Specs </Text> <View> </View> <Text style={{ fontSize: 17, left:125, top:-90, color: 'turquoise', padding: 10}}> Common uses </Text> <Text style={{ fontSize: 17, left:0, top:-85, color: 'white', padding: 10}}> {item.uses1} </Text> <Text style={ this.getUses2style(index)}> {item.uses2} </Text> </View> </View> )} /> </View> ); } }
3 Réponses :
Une fois que vous avez testé que
this.state.utilisateur [index] .USUS1.length <= 12 code> est faux (et vous êtes dans la première
ele code> instruction), vous n'avez plus besoin de test. Encore une fois, il est toujours faux, et si vous voulez toujours le tester, je pense que vous devriez surtout tester
Utilisation de la syntaxe suivante:
(x , je ne pense pas que le triple opérateur soit pris en charge. P>
En fait, cela fonctionne bien si je remplace [l'index] avec [0] même avec un triple opérateur. Il ne s'agit que de reconnaître [index]
Je pense que le problème est ici,
getUses2style(index) { ... } //without `{}`
Hey Ravibagul, j'ai déjà essayé cela et j'ai essayé récemment, il n'a pas fonctionné malheureusement
Dois-je me mapper peut-être peut-être
Pouvez-vous poster un code de composant complet afin que je puisse l'examiner?
Je pense que le problème est ici, style = {ceci.gettus2style ({index})} code>. Ici aussi, vous devez supprimer
{} code> comme
style = {ceci.getus2style (index)} code>
Oui, j'ai vu ça, c'était juste une erreur quand je la copie et la collée. C'est en fait pas la solution depuis que je reçois toujours la même erreur. J'ai changé le poteau pour le corriger
Faites les mêmes modifications pour ChangeLayout code>.
Vous devez également lier ceci code> à
getUs2style code> dans un constructeur comme
ceci.getus2style = ceci.getus2style.bind (this) code> ou vous pouvez utiliser la flèche fonction comme
getUsS2style = (index) => {...} code>
Hey réellement contraignant n'est pas requis ici, cela fonctionne sans elle. La vérité est que j'ai ahd une liste de matrices longue où j'avais un index qui n'aurait pas eu d'utilisations en eux. J'ai effectivement créé un moqueur de Postr ici. Je devais donc ajouter des utilisations à tous les autres tableaux et cela a fonctionné.
Cela fonctionnait donc au départ que je n'ai pas ajouté des utilisations sur les autres tableaux. Mais vous investissez vraiment votre temps pour vous aider et votre réponse est correcte de toute façon pour le poste donné pour que je vous donne le point. Merci pour votre temps
Essayez d'imprimer l'index dans la fonction. Êtes-vous sûr que vous envoyez le paramètre comme objet. Sinon, supprimez ensuite le {} code> de l'index et utilisez-le directement.
getUses2style( index ) {
alert(index)//Make sure it is not undefined
if (this.state.users[index].uses1.length <= 12) {
return {
fontSize: 17,
left: 100,
top: -125,
color: 'white',
padding: 10
}
} else if (12 < this.state.users[index].uses1.length <= 22) {
return {
fontSize: 17,
left: 200,
top: -125,
color: 'white',
padding: 10
}
} else if (22 < this.state.users[index].uses1.length <= 42) {
return {
fontSize: 17,
left: 400,
top: -125,
color: 'white',
padding: 10
}
}
}
Bonjour Camille, vérifiez ma solution et laissez-moi savoir si cela aide.