Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JsonArray Listview与React Native?_Android_Json_Reactjs_React Native - Fatal编程技术网

Android JsonArray Listview与React Native?

Android JsonArray Listview与React Native?,android,json,reactjs,react-native,Android,Json,Reactjs,React Native,这可能是一个愚蠢的问题,我试图从服务器获取json数组并在listview中设置它,但今天我才开始做react js,所以有点困惑如何做我得到null不是一个对象(评估'This.state.datasource')不知道我在哪里出错让我发布我的代码我到目前为止尝试了什么这是index.android代码: import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, ListV

这可能是一个愚蠢的问题,我试图从服务器获取json数组并在listview中设置它,但今天我才开始做react js,所以有点困惑如何做我得到null不是一个对象(评估'This.state.datasource')不知道我在哪里出错让我发布我的代码我到目前为止尝试了什么这是index.android代码:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  ListView,
  View
} from 'react-native';

export default class SecondProject extends Component {
      constructor(props) {
    super(props);
    this.dataSource = new ListView.DataSource({
    rowHasChanged: (r1, r2) => r1 !== r2
  })
  }
  componentDidMount () {
   this.getContractList()
}

  render() {
    this.setState({ dataSource: this.state.dataSource.cloneWithRows(responseJson)});
    return (
      <View style={{flex: 1, paddingTop: 22}}>
        <ListView
          dataSource={rows}
          renderRow={(rowData) => <Text>{rowData}</Text>}
        />
      </View>
    );
  }
    getContractList() {
      return fetch('url')
        .then((response) => response.json())
        .then((responseJson) => {
          this.setState({isLoading: false, jsonData: responseJson});
        ///  console.log(responseJson);
          return responseJson;
        })
        .catch((error) => {
         // console.error(error);
        });
    }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

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

如何处理这个问题能有人帮我吗提前谢谢

试试这样的东西-

constructor(props) {
  super(props);

  this.state = {
    jsonData: null
  };

  this.dataSource = new ListView.DataSource({
    rowHasChanged: (r1, r2) => r1 !== r2
  });
}


试试这样的东西-

constructor(props) {
  super(props);

  this.state = {
    jsonData: null
  };

  this.dataSource = new ListView.DataSource({
    rowHasChanged: (r1, r2) => r1 !== r2
  });
}


我不是react native方面的专家,但我注意到在您的
fetch('url')
中,url没有在任何地方定义。我建议将Json的URL放在那里

我不是react native方面的专家,但我注意到在您的
fetch('url')
中,url没有在任何地方定义。我建议将Json的URL放在那里

我刚才提到了url而不是我的ipi刚才提到了url而不是我的ipit应该可以工作…检查我使用样本JSONY的更新答案你错过了组件DIDMOUNT我已经添加了它现在可以工作了谢谢vinay我如何从jsonit在listview中添加多个项目应该工作…检查我使用样本JSONY的更新答案JSONY您错过了componentDidMount我已经添加了它现在可以工作了感谢SSURE vinay我如何从JSONY在listview中添加多个项您是否尝试过{this.state.datasource&&{rowData}}/>}不工作如何添加整个项您是否尝试过{this.state.datasource&&{rowData}/>}不工作如何添加整个项
  render() {
    return (
      <View style={{flex: 1, paddingTop: 22}}>
        {this.state.jsonData &&
          <ListView
            dataSource={this.dataSource.cloneWithRows(this.state.jsonData)}
            renderRow={(rowData) => <Text>{rowData.title}</Text>}
          />}
      </View>
    );
  }
  getContractList() {
    var url = 'https://facebook.github.io/react-native/movies.json';
    fetch(url)
      .then((response) => response.json())
      .then((responseJson) => {
        console.log(responseJson);
        this.setState({isLoading: false, jsonData: responseJson.movies});
      })
      .catch((error) => {
       //console.error(error);
      });
  }