首页 文章

Angular / Redux / Reducers不导入

提问于
浏览
0

我似乎有一个可能的注射问题我的组合减速器角度 . Angular是创建Redux存储然后将此实例传递给React . 我正在使用ngReact和ngRedux库来达到这个目的 .

请原谅任何错别字 . 应用程序通过Webpack正确编译并运行,但此处详述此问题 .

下面是我的简单减速机

const botsReducerTemp = (state = [] , action) => {  
    switch(action.type) {
      case 'ADD_BOT_API':

        return state

      default:
        return state;
  }
}
export default botsReducerTemp;

我在名为reducers的文件夹中有一个index.js,它结合了这个reducer(和其他几个但在这个问题中没有显示)

import {combineReducers} from 'redux';
    import botsReducerTemp from './bots/bot-reducersTemp';

    const rootReducer =  combineReducers ({
        botsReducerTemp
    });

    export default rootReducer;

在我的angular 1.5应用程序中,我有一个module.js(导入的路径是正确的,并通过WebPack编译)

注意:导入 import rootReducer from '../../reducers' 这是index.js的组合reducer的导入

import ngreact from 'ngreact';
import ngRedux from 'ng-redux';
import thunk from 'redux-thunk';
import logger from 'redux-logger'
import rootReducer from '../../reducers'

angular
  .module('meso-app', [
    'meso-core',
    'ngFileUpload',
    'chart.js',
    'ngRedux'
  ])

 .config(($ngReduxProvider) => {
      $ngReduxProvider.createStoreWith(rootReducer, [thunk], [logger], [{ tests: {id: 1, isDone: false, text: 'bot 1'}}] );
      console.log('rootReducer = ' + typeof(rootReducer));
      console.dir(rootReducer);
  })

......lot's other angular boot stuff....

The problem 在我的.config rootReducer中显示为在Chrome调试中查看时不可用 .

$ ngReduxProvider.createStoreWith执行正常,但由于rootReducer为空,因此不构建Redux存储 .

rootReducer是一个在.createStoreWith中执行/解析的函数

那么如何注入/导入这个功能呢?

2 回答

  • 0

    在module.js中,我删除了导入并将其替换为require

    var rootReducer = require('../../reducers');
    

    然后在我使用的.config中

    let rootReducers = rootReducer.rootReducer;
    

    然后调用createStoreWith,如下所示

    $ngReduxProvider.createStoreWith(rootReducers, [thunk], null, [{ tests: {id: 1, isDone: false, text: 'bot 1'}}] );
    
  • 0

    我正在遵循类似的模式,我能够通过以下方式使其工作:

    import { combineReducers } from 'redux';
    import { ExampleReducer } from './example';
    
    export const RootReducer = combineReducers({
        example: ExampleReducer
    });
    

    然后在你的.config中:

    ...
    import { RootReducer } from '../../reducers';
    ...
    .config(($ngReduxProvider) => {
      $ngReduxProvider.createStoreWith(RootReducer, [thunk], [logger], [{ tests: {id: 1, isDone: false, text: 'bot 1'}}] );
      console.log('rootReducer = ' + typeof(RootReducer));
      console.dir(RootReducer);
    })
    

相关问题