出现白屏,不知道怎么办了

来源:5-1 Popular(最热)模块的数据层设计

大苗子

2017-06-13

我跟着视频已经敲代码到3-1了。

然后现在想把ListviewTest.js代码运行看看之前出现的问题。listviewtest代码没有改过。

我把ListviewTest放入welcomePage中,然后运行后,出现白屏,白屏也没有报错。都不知道哪里的问题。现在要怎么调试哪里出现问题呢。

我用debug js remotely 打断点,但是也不知道要怎么调试。


以下是welcomePage的代码。

import React, {
	Component
} from 'react';
import {
	StyleSheet,
	Text,
	View,
	Navigator
} from 'react-native';
import NavigationBar from '../../NavigationBar'
import HomePage from './HomePage'
import ListViewTest from '../../ListViewTest'
export default class WelcomePage extends Component {
	componentDidMount() {
		// this.timer = setTimeout(() => {
		// 	this.props.navigator.resetTo({
		// 		component: HomePage
		// 	})
		// }, 10000)
	}
	componentWillUnmount() {
		// this.timer && clearTimeout(this.timer);
	}
	render() {
		return <View >
			
			{/*
			<NavigationBar 
			title={'欢迎'}/>
		<Text>欢迎</Text> */}
			<ListViewTest />
			</View>
	}
}

以下是listviewTest的代码

import React, {
  Component,
  PropTypes
} from 'react';
import {
  StyleSheet,
  Text,
  View,
  Image,
  ListView,
  TouchableOpacity,
  RefreshControl

} from 'react-native';
import NavigationBar from './NavigationBar'
// import Toast, {
//   DURATION
// } from 'react-native-easy-toast'
var data = {
  "result": [{
    "email": "f.lee@taylor.edu",
    "fullName": "张三张三张三张三"
  }, {
    "email": "g.jackson@hall.net",
    "fullName": "张三张三张三张三张三"
  }, {
    "email": "l.hall@rodriguez.com",
    "fullName": "张三张三张三张三"
  }, {
    "email": "q.lopez@davis.io",
    "fullName": "张三张三张三张三"
  }, {
    "email": "c.gonzalez@perez.net",
    "fullName": "张三张三张三"
  }, {
    "email": "a.johnson@williams.net",
    "fullName": "张三张三"
  }, {
    "email": "i.anderson@lopez.edu",
    "fullName": "张三张三"
  }, {
    "email": "r.lee@davis.org",
    "fullName": "张三张三"
  }, {
    "email": "o.young@lee.edu",
    "fullName": "张三张三张三张三张三"
  }, {
    "email": "j.wilson@williams.org",
    "fullName": "张三张三张三张三张三"
  }, {
    "email": "z.walker@jackson.io",
    "fullName": "张三张三"
  }, {
    "email": "j.martinez@brown.gov",
    "fullName": "张三张三张三张三"
  }, {
    "email": "y.martin@lewis.io",
    "fullName": "张三张三张三张三"
  }, {
    "email": "w.taylor@gonzalez.org",
    "fullName": "张三张三"
  }, {
    "email": "j.thomas@garcia.org",
    "fullName": "张三张三张三张三"
  }],
  "statusCode": 0
};
export default class ListViewTest extends Component {

  constructor(props) {
    super(props);
    const ds = new ListView.DataSource({
      rowHasChanged: (r1, r2) => r1 !== r2
    });
    this.state = {
      dataSource: ds.cloneWithRows(data.result),
      isLoadding: false,
    }

  }

  renderRow(item) {
    return <View style={styles.row}>
        <TouchableOpacity    onPress = {
        () => {
          this.toast.show('你单击了:' + item.fullName, DURATION.LENGTH_LONG);
        }
      } >
 
      <Text style={styles.tips}>
          {item.fullName}
      </Text>
      <Text style={styles.tips}>
          {item.email}
      </Text>
   </TouchableOpacity>
    </View>
  }
  renderSeparator(sectionID, rowID, adjacentRowHighlighted) {
    return <View key={rowID} style={styles.line}>
        
      </View>
  }

  renderFooter() {
    return <Image style={{width:400,height:100}} source={{uri:'https://images.gr-assets.com/hostedimages/1406479536ra/10555627.gif'}}/>
  }

  _onRefresh() {
    // console.log('onLoad', onLoad);
    this.setState({
      isLoadding: true
    });
    setTimeout(() => {

      this.setState({
        isLoadding: false
      })

    }, 2000);
  }
  render() {

    return (
      <View style={styles.container}>
          <NavigationBar 
              title={'ListViewTest'}
           />
           <ListView 
            dataSource = {
              this.state.dataSource
            }
            renderRow={(item)=>this.renderRow(item)}

    refreshControl = { < RefreshControl
                                  refreshing={this.state.isLoadding}
              onRefresh = {
                 this._onRefresh.bind(this)
              }
                              />}

            renderSeparator = {
              (sectionID, rowID, adjacentRowHighlighted) => this.renderSeparator(sectionID, rowID, adjacentRowHighlighted) 
            }
            renderFooter={()=>this.renderFooter()}

              
            />
          {/*
            <Toast ref={toast=>{this.toast=toast}}/>
          */}
            
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'white',

  },
  tips: {
    fontSize: 18,
  },
  row: {

    padding: 5
  },
  line: {
    height: 1,
    backgroundColor: 'black'
  }

});


写回答

4回答

CrazyCodeBoy

2017-06-14

关于如何调试rn应用,我在http://www.imooc.com/learn/808课程中有讲到哦,可以去看一下,希望能帮到你

0
1
大苗子
非常感谢!
2017-06-14
共1条回复

CrazyCodeBoy

2018-03-28

白屏原因是因为:没有指定WelcomePage的根节点没有大小,给它指定个大小比如如:style={{flex:1}}即可:

import React, {
   Component
} from 'react';
import {
   StyleSheet,
   Text,
   View,
   Navigator
} from 'react-native';
import ListViewTest from './ListViewTest'
export default class WelcomePage extends Component {
   componentDidMount() {
       // this.timer = setTimeout(() => {
       //     this.props.navigator.resetTo({
       //        component: HomePage
       //     })
       // }, 10000)
   }
   componentWillUnmount() {
       // this.timer && clearTimeout(this.timer);
   }
   render() {
       return <View style={{flex:1}}>

           {/*
        <NavigationBar 
        title={'欢迎'}/>
     <Text>欢迎</Text> */}
         <ListViewTest />
       </View>
   }
}


0
0

帅得漂亮

2018-03-27

解决了么?我卡在这里一天了,一直不显示ListView数据,总是白屏中,没找到问题的根源。

0
0

帅得漂亮

2018-03-27

解决这个问题了吗?我现在也遇到类似的问题,断点发现我的数据都获取到了,还是白屏。

0
0

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

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

1577 学习 · 727 问题

查看课程