【问题标题】:Issue with store when moving actionTypes into a constants file将 actionTypes 移动到常量文件时出现 store 问题
【发布时间】:2019-07-14 17:39:01
【问题描述】:

当我在 action.js 的顶部定义我的 actionTypes 时,我的商店工作得非常好,但是当我将它们移动到他们自己的 ActionTypes.js 常量文件并导入时,我的 redux 商店停止工作。

action.js 看起来像时,我的商店工作

export const CHANGE_TEXT = 'CHANGE_TEXT';

// actionCreators
export function changeText(text) {
  return { 
    type: CHANGE_TEXT,
    text };
}

但是当我将它们移到它们自己的常量文件中时,一切都停止了:

action.js

import { CHANGE_TEXT } from '../constants/ActionTypes'

// actionCreators
export function changeText(text) {
   return { 
     type: CHANGE_TEXT,
     text };
    }

ActionTypes.js

// actionTypes
export const CHANGE_TEXT = 'CHANGE_TEXT';

ActionTypes.js 的导入路径没有错误,因为我没有收到任何错误或控制台输出提示错误。只是商店里没有商品。

可能需要注意的是,我没有控制台记录商店,我在 Text 组件中作为 javascript 对象输出(我认为这就是它的名称,抱歉)例如。 {Store.getState().changeText}。当我在手机上编辑这个问题并从内存中读取时,我刚刚写的内容可能有错误。 但是,当我将所有内容都放在一个 action.js 文件中时,这是可行的,但是当我将 actionTypes 移动到常量文件时,它就不行了。

【问题讨论】:

  • “一切都停止工作”是什么意思?你有错误吗?它说什么?乍一看这看起来不错,但它可能是一千种不同的东西......导入路径错误,模块配置问题等。除非你给我们更多的上下文,否则我们会在黑暗中大喊大叫...... .
  • @Josep 我编辑了我的帖子,希望能更清楚。工作 = 文本组件内屏幕上的字符串输出,无工作 = 空字符串(初始状态)。运行时和控制台日志都没有错误
  • 将它们放在同一个文件中没有任何问题,你见过github.com/erikras/ducks-modular-redux 我知道它不能回答你的问题,但我发现这个设置更容易
  • 您介意与我们分享您的减速器的代码吗?我对将动作导入减速器的方式特别感兴趣。谢谢!

标签: javascript reactjs react-native redux


【解决方案1】:

好的,这是我在黑暗中拍摄的。如果我不得不猜测这里发生了什么,那就是:

请注意,您正在使用旧代码:

export const CHANGE_TEXT = 'CHANGE_TEXT';

来自action.js 文件,是吗?现在您正在将 CHANGE_TEXT 从另一个文件导入到 action.js

但是,您不再从action.js 导出CHANGE_TEXT,而是在从那里导出之前,对吧?

所以,让我们想象一下,在您的 reducer 中您忘记更新导入,而您仍然从 reducer 中导入来自 action.js 的操作。在那种情况下会发生什么?好吧,导入不会崩溃,它只会将CHANGE_TEXT 导入为 undefined 并且reducer 将停止工作,因为它与操作的type 不匹配,因为您将尝试将其与@987654330 匹配@。

如果我不得不猜测,那就是它......但它可能是其他一千种东西。

【讨论】:

  • 就这么简单!谢谢!我在工作中度过了漫长的一天,当我回家处理这个问题时,我的大脑就是不工作。大概在我的reducer.js 中我也从constants/actionTypes.js 导入?这就是我目前所做的。或者有没有办法导出actions.js中actionTypes的导入?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
相关资源
最近更新 更多