renderFooter无法渲染图片

来源:4-1 ListView列表、下拉刷新、上拉加载的基本使用

倚松听花语

2018-11-02

老师,按照视频写的。
renderFooter中的图片没有渲染出来,哪里有问题吗?

import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Image,
    Navigator,
    TouchableOpacity,   // 可单击组件
    Text,
    View,
    ListView,
} from 'react-native';
import NavigationBar from './NavigationBar';

var data = {
    "result":[
        {
            "email":"xxx@xxx.com",
            "fullName":"xxx"
        },
        {
            "email":"yyy@yyy.com",
            "fullName":"yyy"
        },
        {
            "email":"xxx@xxx.com",
            "fullName":"xxx"
        },
        {
            "email":"yyy@yyy.com",
            "fullName":"yyy"
        },
        {
            "email":"xxx@xxx.com",
            "fullName":"xxx"
        },
        {
            "email":"yyy@yyy.com",
            "fullName":"yyy"
        },
        {
            "email":"xxx@xxx.com",
            "fullName":"xxx"
        },
        {
            "email":"yyy@yyy.com",
            "fullName":"yyy"
        },
        {
            "email":"xxx@xxx.com",
            "fullName":"xxx"
        },
        {
            "email":"yyy@yyy.com",
            "fullName":"yyy"
        },
    ]
}

export default class ListViewTest extends Component {
    constructor(props) {
        super(props);
        const ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!=r2});
        this.state = {
            dataSourece: ds.cloneWithRows(data.result),
        }
    }

    renderRow(item){
        return(<View style={styles.row}>
            <Text style={styles.tips}>{item.fullName}</Text>
            <Text style={styles.tips}>{item.email}</Text>
        </View>);
    }

    renderSeparator(sectionID, rowID, adjacentRowHighLighted){
        return(<View key={Math.random()} style={styles.line}></View>);
    }

    // TBD
    renderFooter(){
        // 网络图片需要指定宽和高
        return(<Image style={{width:400,height:100}} source={{uri:'http://images.gr-assets.com/hostedimages/1406479536ra/10555627.gif'}}></Image>);
    }

    render() {
        return (
            <View style={styles.container}>
                <NavigationBar
                    title="ListViewTest"
                />
                <ListView   
                    dataSource={this.state.dataSourece}
                    renderRow={(item)=>this.renderRow(item)}
                    renderSeparator={(sectionID, rowID, adjacentRowHighLighted)=>this.renderSeparator(sectionID, rowID, adjacentRowHighLighted)}
                    renderFooter={()=>this.renderFooter()}
                />
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: 'white',
    },
    tips: {
        fontSize: 18,
    },
    row: {
        height: 50,
    },
    line: {
        height: 1,
        backgroundColor:'black'
    },
});
写回答

1回答

CrazyCodeBoy

2018-11-05

renderFooter是中的Image是可以渲染出来的,你不是你的姿势不对,你上拉试一下:

//img.mukewang.com/szimg/5bdfa56e00018cf403390091.jpg


另外,发现你在用Math.random()做key,key={Math.random()} ,random()生成的是随机数,无法保证多次调用数据的唯一性的,所以最好能使用个唯一的id来作为key哈。

0
0

React Native技术精讲与高质量上线App开发

一个真实的上线项目,一次完整的开发过程,全面掌握React Native技术

1577 学习 · 727 问题

查看课程