dispatcher.dispatch () в action.js дает мне ошибку отправки не является функцией - PullRequest
0 голосов
/ 17 апреля 2019

Я использую Flux версии 3.1.3

Я хочу знать, почему диспетчер не работает. Я получаю сообщение об ошибке:

отправка не является функцией

_dispatcher_AppDispatcher__WEBPACK_IMPORTED_MODULE_0__.default.dispatch is not a function

AppActions.js file

import AppDispatcher from '../dispatcher/AppDispatcher';
import AppConstants from '../constants/AppConstants';

var AppActions = {

  searchMovies : function(movie){

 AppDispatcher.dispatch({type:AppConstants.SEARCH_MOVIES,payload:movie});
  }
}
export default AppActions;

Файл AppStore.js

var ApDispatcher = require('../dispatcher/AppDispatcher');
var AppConstants = require('../constants/AppConstants');
var EventEmitter = require('events').EventEmitter;
var Assign = require('object-assign');
var AppAPI = require('../utils/AppAPI');
var AppActions = require('../actions/AppActions');

Файл SearchForm.js

class ApStore extends EventEmitter{

  action({type,payload}){

    switch (type) {

      case AppConstants.SEARCH_MOVIES:

        console.log(1);

        this.addTask(payload);

        break;

    }
  }

}

const store = new ApStore();

module.export = ApStore;

    import React from 'react';

import AppActions from '../actions/AppActions.js';


export default class SearchForm extends React.Component {

  onSubmit(e){

    e.preventDefault();

    var movie = {

      title : this.refs.title.value.trim()

    }

    //console.log("searchform.js"+movie.title);

    AppActions.searchMovies(movie);

  }

  render() {

    return (

      <div className="search-form">

          <h1 className="text-center">search for a movie</h1>

          <form onSubmit={this.onSubmit.bind(this)}>

              <div className="form-group">

                <input type="text" id="movieser" className="form-control" 
ref="title" placeholder="Enter movie name" />

              </div>

              <button className="btn btn-primary btn-block"> search 
movies</button>

          </form>

      </div>

    );

  }

}

1 Ответ

0 голосов
/ 20 апреля 2019

Ваша проблема в основном в том, что вам нужно создать свой Диспетчер.Как вы говорите в своем комментарии, вы экспортируете Dispatcher.Но вам нужно создать объект диспетчера.

Измените свой файл AppDispatcher.js или файл AppActions.js.

Например, добавьте это в файл AppAction.js:

import AppDispatcher from '../dispatcher/AppDispatcher';
import AppConstants from '../constants/AppConstants';

const myDispatcher = new AppDispatcher();


var AppActions = {

  searchMovies : function(movie){

 myDispatcher.dispatch({type:AppConstants.SEARCH_MOVIES,payload:movie});
  }
}
export default AppActions;

Это только пример, просто чтобы показать, где ваша проблема.

...