有没有办法告诉* WHERE *在React / Redux文件结构中调用了一个动作?

时间:2018-06-22 19:44:47

标签: reactjs redux

有没有一种方法可以告诉 WHERE 在React / Redux文件结构中调用了一个动作?我正在寻找可以看到被叫的动作。我只是不知道该动作在文件系统中的哪个位置。有没有办法确定使用Redux工具?我觉得我现在正在追踪一只兔子。

帮助!谢谢!

1 个答案:

答案 0 :(得分:2)

基本方法是:

  • 在代码库文件中搜索操作类型字符串
  • 查看动作创建者是否正在使用它
  • 进行“查找用法”或文本搜索,以了解该动作创建者的导入和使用位置

此外,您可以使用一个中间件,该中间件将在看到特定操作时记录堆栈跟踪。我认为我还没有看到过这样的中间件,但这是一个快速(经过简要测试)的实现,该实现应该可以正常工作,并且为您提供堆栈跟踪回到调度位置:

const createLogActionStackTraceMiddleware = (actionTypes = []) => {
    const logActionStackTraceMiddleware = storeAPI => next => action => {
        if(action.type && actionTypes.includes(action.type)) {
            console.trace(`Action: ${action.type}`);
        }

        return next(action);
    }

    return logActionStackTraceMiddleware;
}


// in your store setup:
const stackTraceMiddleware = createLogActionStackTraceMiddleware(["ACTION_1", "ACTION_2"]);

const middlewareEnhancer = applyMiddleware(thunkMiddleware, stackTraceMiddleware);