簡體   English   中英

React-Native將值顯示到列表視圖

[英]React-Native displaying values to list view

我是新來的本地人。 我試圖給出一個http請求並獲得響應,並在列表視圖中顯示結果。

http響應有效。 這是我得到的回應。

{
    "Items": [
        {
            "_id": "000000000000000000000000",
            "Subject": "React componen",
            "From": "componen@gmail.com",
            "CreateDate": "2017-06-16T08:29:43.444Z",
            "Message": "React component that wrap",
            "AssignedTo": "-1",
            "Status": 0,
            "Priority": 1,
            "OverdueDateTime": "2017-07-28T00:00:00Z",
            "OverdueDateTimeAsString": null,
            "Read": false,
            "TicketStatus": 0,
            "InboxID": "5c7d5a56-f39f-40ac-b516-d9200fe03c68",
            "TicketID": 6272,
            "CompanyID": "c2ef2cc1-3db8-4d1f-93cf-8cd802aacc75",
            "Deleted": false,
            "AttachmentName": null,
            "hasAttachment": false,
            "ModifiedDate": "2017-06-16T08:29:43.444Z",
            "Tags": null,
            "IsFollowed": false,
            "IsReply": false,
            "TicketType": 6,
            "LastUpdateState": 0,
            "FromName": "componen"
        },
        {
            "_id": "000000000000000000000000",
            "Subject": "There are one ",
            "From": "sathya@zupportdesk.com",
            "CreateDate": "2017-01-02T06:59:45.438Z",
            "Message": "There are one or mor",
            "AssignedTo": "69c02265-abca-4716-8a2f-ac5d642f876a",
            "Status": 0,
            "Priority": 3,
            "OverdueDateTime": "2017-05-31T00:00:00Z",
            "OverdueDateTimeAsString": null,
            "Read": true,
            "TicketStatus": 0,
            "InboxID": "5c7d5a56-f39f-40ac-b516-d9200fe03c68",
            "TicketID": 540,
            "CompanyID": "c2ef2cc1-3db8-4d1f-93cf-8cd802aacc75",
            "Deleted": false,
            "AttachmentName": null,
            "hasAttachment": false,
            "ModifiedDate": "2017-01-02T06:59:45.438Z",
            "Tags": null,
            "IsFollowed": false,
            "IsReply": false,
            "TicketType": 6,
            "LastUpdateState": 0,
            "FromName": "sathyabaman"
        },
    ],
    "NextPageLink": null,
    "Count": 6
}

我想在這樣的列表視圖中顯示它

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Image,
  TextInput,
  TouchableOpacity,
  ScrollView

} from 'react-native';


import authController from '../authController/auth'
import frequentData from '../frequentData/frequentData'
import cannedResponseController from '../cannedResponseComponent/cannedResponse'
const platForm = require('react-native').Platform.OS;

export default class dashboardScreen extends Component {

  constructor(props) {
     super(props);
     this.state = {data : ''};

     frequentData.getAllTickets("sathya@zupportdesk.com", function(Alltickets) {
       console.log('Response---------Alltickets----- : '+ JSON.stringify(Alltickets));
          console.log('Response---------size----- : '+ Alltickets.Items.length);
          this.state = {
            data: Alltickets.Items
          };

     });
  }

  navigate(routeName) {
    this.props.navigator.push({ name : routeName });
  }

  render() {
    return (
      <View style={styles.container}>
            <View style={ styles.topNavBar }>
                  <View style={ styles.navBarTextContainer }>
                      <Image style={ styles.navIcon } source={ require('../assests/hamburger.png') } />
                      <Text style={ styles.navBarText }> DashBoard </Text>
                  </View>
            </View>


            <View>
                <ScrollView>
                       { this.state.data.map((tickets) => {
                            return (
                                    <View key={ tickets.TicketID }>
                                            <TouchableOpacity>
                                                <View >
                                                    <View style={ styles.companyInnerView }>
                                                        <Text> { tickets.From } </Text>
                                                        <Text> {tickets.Subject} </Text>
                                                    </View>
                                                </View>
                                           </TouchableOpacity>
                                           <View>
                                           </View>
                                        </View>
                                    );
                        })}
                </ScrollView>
            </View>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  container: {
    flex : 1,
    flexDirection : 'column',
    //justifyContent: 'center',
    //alignItems: 'center',
    backgroundColor : '#F3F3F4',
  }
  ,navMenuBtn : {

  }
  ,navMenuIcon : {
      height : 50,
      width : 30,
      marginLeft : 15
  }
  ,topNavBar : {
      height : 70,
      backgroundColor : '#FFFFFF'
  }
  ,navImage1 : {
      height : 70,
      width : 70
  }

});

AppRegistry.registerComponent('TicketApp6', () => TicketApp6);

錯誤

在此處輸入圖片說明

getAllTickets獲得響應后,我想在列表視圖中顯示所有票證,可以幫助我解決此問題。 tnx。

這可能是因為在數據中包含任何值之前調用了render方法,使您最終嘗試映射undefined

嘗試將票證移至單獨的函數,然后改為通過render調用它。

  drawTickets() {
   if(this.state.data.length > 0) {
      return this.state.data.map(tickets => (
        <View key={tickets.TicketID}>
          <TouchableOpacity>
            <View>
              <View style={ styles.companyInnerView }>
                <Text> { tickets.From } </Text>
                <Text> {tickets.Subject} </Text>
              </View>
            </View>
          </TouchableOpacity>
        <View>
      ))
    }
  }

  render() {
    return (
      <View style={styles.container}>
            <View style={ styles.topNavBar }>
                  <View style={ styles.navBarTextContainer }>
                      <Image style={ styles.navIcon } source={ require('../assests/hamburger.png') } />
                      <Text style={ styles.navBarText }> DashBoard </Text>
                  </View>
            </View>
            <View>
                <ScrollView>
                  {this.drawTicket()}
                </ScrollView>
            </View>
      </View>
    );
  }

我建議您看看RN的FlatList API,並改用它。

PS:始終使用this.setState()更新狀態,而不是直接操作狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM