CompondentDidMount失败propType-将fetch定义为var

时间:2016-08-31 06:53:17

标签: javascript reactjs

我正在尝试将CompondentDidMount添加到我的班级。

但是,这会返回错误:

propType失败:提供给component的道具IndexRoute无效。

这是我尝试使用ComponentDidMount:

var PhotoGallery = React.createClass({
  componentDidMount () {
    return fetch("http://localhost:8000/api/test/?format=json")
      .then((response) => response.json())
      .then((json) => {
        console.log(json);
        this.setState({PHOTODATA: json})
      })
  },
        getInitialState: function() {
      return {
        displayedCategories: []
      };
    },

此外,如果手动将我的json数据设置为如下所示的var,我的代码工作正常:

var PHOTODATA = [{ ... *json data* ... }]

    ...

var PhotoGallery = React.createClass({

        getInitialState: function() {
      return {
        displayedCategories: []
      };
    },

    ...

    render: function(){
        var uniqueCategories = PHOTODATA.map(function (photo) {
            return photo.tag; // tag is a list of tags...
        }).reduce(function (uniqueList, someTags) {
            return uniqueList.concat(
              someTags.filter(function (thisTag) {
                return !uniqueList.some(function(uniqueTag) {
                  return uniqueTag.id === thisTag.id && uniqueTag.taglevel === thisTag.taglevel
                });
              })
            );
        }, []
);

完整代码在此代码中:

http://codepen.io/yarnball/pen/GqbyWr

1 个答案:

答案 0 :(得分:0)

在渲染功能中,我使用" var PHOTODATA = this.state.PHOTODATA",所以我可以像以前一样使用它。

我也没有在远处定义ComponentDidMount而是使用" export"像这样:

void delete_mem(){
     mem_block = NULL;
     free(mem_block);
}

这现在有效:

export default React.createClass({
  componentWillMount () {
    return fetch("http://localhost:8000/api")
      .then((response) => response.json())
      .then((json) => {
        console.log(json);
        this.setState({testapi: json})
      })
  },