React Native Error:undefined不是一个函数(评估

时间:2017-02-25 16:08:24

标签: javascript react-native react-redux

在编写我的第一个RN应用程序时,我在执行代码时收到以下错误消息,

" undefined不是一个函数(评估' _ConfigureStore2.default.dispatch(CategoryAction.categoryView())')"

ConfigureStore.js:

import {createStore, applyMiddleware} from 'redux';
import reducers from '../reducers';
import thunk from 'redux-thunk';

var middlewares = applyMiddleware(thunk);

export default function configureStore(initialState) {
  return createStore(reducers, initialState, middlewares);
}

CategoryContainer.js:

import React, { Component } from 'react';
import stores from '../stores/ConfigureStore';
import * as CategoryAction from '../actions/CategoryAction';

stores.dispatch(CategoryAction.categoryView());

class CategoryContainer extends Component {
}

CategoryAction.js:

import * as actionTypes from './ActionTypes';
import AppConstants from '../constants/AppConstants';

export function categoryView() {
  const categories = ['CATEGORY1', 'CATEGORY2'];
  return {
      type: "CATEGORY_VIEW",
      categories: categories
  };
}

CategoryReducer.js:

const initialState = {
  categories:[],
}

export default function categoryReducer (state = initialState, action) {
  switch (action.type) {
    case CATEGORY_VIEW:
      return Object.assign({}, state, {
              categories: action.categories
            });
    }
}

即使我在CategoryContainer.js中尝试了以下方法,但仍然遇到了同样的错误,

import { categoryView } from '../actions/CategoryAction';
stores.dispatch(categoryView());

请协助解决问题。

2 个答案:

答案 0 :(得分:1)

试一试:

CategoryAction.js

export default class CategoryAction {
    categoryView = () => {
        const categories = ['CATEGORY1', 'CATEGORY2'];
        return {
            type: "CATEGORY_VIEW",
            categories: categories
        };
    }
}

CategoryContainer.js

import React, { Component } from 'react';
import stores from '../stores/ConfigureStore';
import CategoryAction from '../actions/CategoryAction';

stores.dispatch(CategoryAction.categoryView());

class CategoryContainer extends Component {
}

答案 1 :(得分:0)

如下所示更改ConfigureStore.js可以解决问题。

import {createStore, applyMiddleware} from 'redux';
import reducers from '../reducers';
import thunk from 'redux-thunk';

/*var middlewares = applyMiddleware(thunk);
export default function configureStore(initialState) { //default is    undefined
  return createStore(reducers, initialState, middlewares);
}*/

const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const store = createStoreWithMiddleware(reducers);
export default store;