【问题标题】:React Native Error: undefined is not a function (evaluatingReact Native 错误:未定义不是函数(评估
【发布时间】:2017-02-25 16:08:24
【问题描述】:

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

“未定义不是函数(评估'_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());

请协助解决问题。

【问题讨论】:

    标签: javascript react-native react-redux


    【解决方案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 {
    }
    

    【讨论】:

    • 我尝试了建议的方法,但仍然得到相同的错误'未定义不是函数(评估'_ConfigureStore2.default.dispatch(CategoryAction.categoryView())')'
    • @univ 哦。也许错误就在商店里。你能添加那个代码吗?
    • 我已经用额外的代码行更新了帖子。希望这将有助于进一步分析。
    • @univ 我不完全确定你想在这里做什么,但我相信你想要一个名为 ConfigureStore 的类在你的 ConfigureStore.js 文件中。从那里,您需要一个名为dispatch 的函数,您可以在其中放置您的逻辑。你在其他类中的导入应该是import ConfigureStore from '../stores/ConfigureStore'。请参阅我的答案中的 CategoryAction 课程。它应该遵循与此类似的格式。
    【解决方案2】:

    如下更改 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多