加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 未捕获的ReferenceError:未定义FluxDispatche

发布时间:2020-12-17 02:49:33 所属栏目:百科 来源:网络整理
导读:这是我第一次尝试使用反应.我遇到了下面显示的以下错误.未捕获的ReferenceError:未定义FluxDispatcher.我相信我已经要求所有正确的宝石和 javascript文件但是,我无法弄清楚为什么没有定义FluxDispatcher.下面我列出了一些文件,如果我需要提供更多信息,请告
这是我第一次尝试使用反应.我遇到了下面显示的以下错误.未捕获的ReferenceError:未定义FluxDispatcher.我相信我已经要求所有正确的宝石和 javascript文件但是,我无法弄清楚为什么没有定义FluxDispatcher.下面我列出了一些文件,如果我需要提供更多信息,请告诉我.

enter image description here

的Gemfile

source 'https://rubygems.org'

gem 'rails','4.2.2'
gem 'sqlite3'
gem 'sass-rails','~> 5.0'
gem 'uglifier','>= 1.3.0'
gem 'jquery-rails'
gem 'jbuilder','~> 2.0'
gem 'awesome_print','~> 1.7'
gem 'bootstrap','~> 4.0.0.alpha5'
gem 'ancestry'
gem 'rails_admin'
gem 'react-rails'
gem 'flux-rails-assets'
gem 'lodash-rails'

source 'https://rails-assets.org' do
  gem 'rails-assets-tether','>= 1.1.0'
end

group :development,:test do
  gem 'byebug'
  gem 'web-console','~> 2.0'
  gem 'spring'
end

appliction.js

//= require jquery
//= require jquery_ujs
//= require tether
//= require bootstrap
//= require lodash
//= require react
//= require react_ujs
//= require flux
//= require eventemitter
//= require components
//= require app
//= require_tree .

app.js

//
var Constants = {
  CHANGE_EVENT: 'change',ADD_COMMENT: 'comments.add'
};

var Store = new _.extend({},EventEmitter.prototype,{
  _comments: [],addComment: function(comment) {
    this._comments[comment.id] = comment;
  },comments: function() {
    return this._comments;
  },addChangeListener: function(callback) {
    this.on(Constants.CHANGE_EVENT,callback);
  },removeChangeListener: function(callback) {
    this.removeListener(Constants.CHANGE_EVENT,emitChange: function() {
    this.emit(Constants.CHANGE_EVENT);
  }
});

var AppDispatcher = new FluxDispatcher();

AppDispatcher.register(function(payload) {
  var action = payload.actionType;
  switch(action) {
    case Constants.ADD_COMMENT:
      Store.addComment(payload.comment);
      Store.emitChange();
      break;
    default:
      // NO-OP
  }
});

// Actions
var Actions = new _.extend({},{
  addComment: function(params) {
    AppDispatcher.dispatch({
      actionType: Constants.ADD_COMMENT,comment: params
    });
  }
});

comment_list.js.jsx

var CommentList = React.createClass({

  componentDidMount: function() {
    Store.addChangeListener(this._onChange);
  },componentWillUnmount: function() {
    Store.removeChangeListener(this._onChange);
  },render: function() {
    console.log('rendering');
    return (
      <div>
        {[].map(function(comment) {
          return <Comment key={comment.id} {... comment} />;
        })}
      </div>
    );
  },_onChange: function() {
    this.forceUpdate();
  }
});

//Actions
var Actions = new _.extend({},comment: params
    })
  }
});

show.html.erb

<div class="row">
  <h1>Title: <%= @post.title %></h1>
</div>
<div class="row">
  <div class="col-md-6">
    <p>
      <%= @post.description %>
    </p>
  </div>
  <div class="col-md-6">
    <p>Comments:</p>
    <%= react_component('CommentList') %>
  </div>
</div>

解决方法

我正在做相同的教程=).我所做的代码更改是 –

var AppDispatcher = new Flux.Dispatcher();

只是把“.”在Flux和Dispatcher之间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读