首页 > 解决方案 > 如何在本机反应中使用选择器中数据库中的 responseJson 数据

问题描述

我获取响应 Jeson,我需要在选择器中使用它,但是在运行代码时我遇到了这个问题: TypeError: TypeError: undefined is not an object (evalating 'this.state.dataSource.map')

当我使用一个平面列表时,它会运行 whitout 问题

    <Picker selectedValue = {this.state.time} onValueChange = {this.updatetime}>
    {this.state.dataSource.map((item, key)=>(
        <Picker.Item label={item} value={item} key={key} />)
        )}

        </Picker>

日期函数 = () =>{

fetch('http://192.168.1.111:8000//mobreservedTimes?date='+this.state.date , {
  method: 'get',


 /* body: JSON.stringify({

    datepik: 20-7-2019  ,

  })*/

}).then((response) => response.json())
      .then((responseJson) => {


this.setState({
  isLoading: false,
  dataSource: responseJson.avTimes,
}, function(){

});


      }).catch((error) => {
        console.error(error);
        alert(error);
      });

TypeError:TypeError:未定义不是对象(评估'this.state.dataSource.map')

标签: reactjsreact-nativereact-native-android

解决方案


将您的代码更新为

{this.state.dataSource && (<Picker selectedValue = {this.state.time} onValueChange = {this.updatetime}>
    {this.state.dataSource.map((item, key)=>(
        <Picker.Item label={item} value={item} key={key} />)
        )}

</Picker>)}

这个想法是,在渲染之前检查以确保this.state.dataSource不为空Picker


推荐阅读