为了账号安全,请及时绑定邮箱和手机立即绑定

报imageDatas.forEach is not a function的错误

安装了最新的版本,react声明的用法变了,视频里用的var ImgFigure=React.createClass({render:function(){....}});这样的声明。安装的用的

class ImgFigure extends React.Component { render() {... }}这样的。所以我用了React.Component 这个什么然会提示说要换react的版本。

我不知道是不是声明这里的错。这样用对不对

代码如下:

require('normalize.css/normalize.css');

require('styles/App.css');


import React from 'react';


//获取图片相关的数据

var imageDatas = require('../data/imageDatas.json');

//利用自执行函数。将图片名信息转换成图片URL路径信息

imageDatas = (function genImageURL(imageDatasArr) {

for (var i = 0, j = imageDatasArr.length; i < j; i++) {

var singleImageData = imageDatasArr[i];

singleImageData.imageURL = require('../images/' + singleImageData.fileName);

imageDatasArr[i] = singleImageData;

}

return imageDatasArr;

})(imageDatas);


class ImgFigure extends React.Component {

  render() {

   return(

<figure className="img-figure">

<img src={this.props.data.imageURL} alt={this.props.data.title}/>

<figcaption>

<h2></h2>

</figcaption>

</figure>

)

  }

}

/*大管家*/


class AppComponent extends React.Component {

  render() {

     

/*声明*/

var controllerUnits=[],

imgFigures=[];

imageDatas.forEach(function(value){

imgFigures.push(<ImgFigure data ={value}/>);

});

return (

<section className="stage">

<section className="img-sec">

{imgFigures}

</section>

<nav className="controller-nav">

{controllerUnits}

</nav>

</section>

    );

  }

}


AppComponent.defaultProps = {

};


export default AppComponent;

最后报错就是http://img1.sycdn.imooc.com//5994f7e50001f38910200227.jpg

[HMR] Waiting for update signal from WDS...和[WDS] Hot Module Replacement enabled.这2处是错误吗,怎么解决?

我卡在这里好久了。注释掉错误的地方就出现2个警告http://img1.sycdn.imooc.com//5994f8c10001150605920192.jpg

求帮助!菜鸟一枚,学的很痛苦,一度中断过,现在有拾起来,我也正在不断的尝试。

正在回答

4 回答

let imageDatas = require('json!../data/imageDatas.json');  // 改成这样子的 

项目源码在:https://github.com/3terrace/gallery-by-react,你可以去看看

0 回复 有任何疑惑可以回复我~
#1

慕移动6874463 提问者

你给的地址我拷下来了,跑起来了,好可爱呀!我会好好看的!
2017-08-21 回复 有任何疑惑可以回复我~

你这个问题是json-loader导致的,require('../data/imageDatas.json')加载的是Object对象,而不是数组,所以才报上面的错误的。

我的解决方法是修改配置文件,把 .json文件交给loader进行处理, 不过新版本是在cfg文件夹下的default.js中

loaders: [
     // 省略了部分内容
      {
        test: /\.styl/,
        loader: 'style-loader!css-loader!postcss-loader!stylus-loader'
      },
      {
        test: /\.json$/,
        loader:'json-loader'
      },
      {
        test: /\.(mp4|ogg|svg)$/,
        loader: 'file-loader'
      }
    ]


0 回复 有任何疑惑可以回复我~

改过了,然后报错说Uncaught Error: Cannot find module './undefined'.我拉了别人的代码,也跑起来了。然后复制node-modules.和package.json.到自己的项目中运行还是报错!要疯了

0 回复 有任何疑惑可以回复我~
#1

倾城一笑stu

node-modules 不能复制啊亲。。。。。。。要自己通过npm安装
2017-09-10 回复 有任何疑惑可以回复我~
#2

慕移动6874463 提问者

我试试
2017-09-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
React实战--打造画廊应用(上)
  • 参与学习       57313    人
  • 解答问题       273    个

颠覆式前端UI开发框架 React,打造图片画廊实践案讲解

进入课程

报imageDatas.forEach is not a function的错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信