【问题标题】:React redux - actionsReact redux - 动作
【发布时间】:2021-05-12 00:26:47
【问题描述】:

最近在redux上尽力了,看到了一个非常不错的文件夹结构项目,我也尝试了一样的结构,但是同样的方法没用……

例如我有一个类似的路径:./src/_actions,在这个文件夹中我有“user.actions.js”、“alert.actions.js”、“index.js”。

在 alert.actions.js 我有类似的东西:

import { alertConstants } from "../_constants/alert.constants";

export const alertActions = {
  success,
  error,
  clear,
};

function success(message) {
  return { type: alertConstants.SUCCESS, message };
}

function error(message) {
  return { type: alertConstants.ERROR, message };
}

function clear() {
  return { type: alertConstants.CLEAR };
}

我很想将它们从一个地方导入到路径为“./../test.js”的文件夹中:

import {alertActions} from "./../_actions";
import {useDispatch} from "react-redux";

export const test = () => {
const dispatch = useDispatch();

return (
<button onClick={() => dispatch(alertActions.success("test"))}> Click </button>
)

}

但我得到类似“alertActions.success”的信息未定义。我不知道我做错了什么。在那个项目中,index.js 也一直是空的......那个对象应该导出所有功能......有人知道任何解决方案吗? :(

【问题讨论】:

    标签: reactjs redux structure action


    【解决方案1】:

    函数生成后需要导出对象。通常它们会被提升,但在这种情况下,您可能使用的是严格模式,而它们不是。您必须移动导出对象,或者更好地单独导出所有对象,然后在导入它们时编写:

    import * as alertActions from 'youfile'
    

    如果你想导出整个对象,你应该像这样导出它:

    export default alertActions
    

    然后你需要像这样导入它们:

    import alertActions from 'yourfile'
    

    并访问它们:

    alrtActions.error()
    

    【讨论】:

    • 如果您希望它们位于一个对象中,您应该使用导出默认值来执行此操作。这意味着您只需要从“文件”写入 import alertActions,然后您就可以像 alertActions.error() 一样访问它们
    • 很高兴我能帮上忙。通常在堆栈交换站点中,当答案解决了您的问题时,您可以接受/支持它。它可能对使用 google 的人更有帮助,你也会正式感谢我 :)
    • 谢谢,搞定了。我得到了第一份前端开发人员的工作,所以这就是我想提高反应技能的原因之一我真的很高兴你能解决我的问题,我可以在我的项目中走得更远^^
    猜你喜欢
    • 2021-10-14
    • 2016-01-05
    • 1970-01-01
    • 2017-08-24
    • 2017-11-11
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多