React Native - 动态列出/需要目录中的文件

2024-02-20

我正在使用 Redux,并希望动态包含目录中的所有文件。

/redux/index.js

// Actions

import * as authActions from './auth/authActions';
import * as deviceActions from './device/deviceActions';
import * as globalActions from './global/globalActions';
import * as menuActions from './menu/menuActions';
... etc

export const actions = [
  authActions,
  deviceActions,
  globalActions,
  menuActions,
...
];

// Reducers

import auth from './auth/authReducer';
import device from './device/deviceReducer';
import global from './global/globalReducer';
import menu from './menu/menuReducer';
...

import { combineReducers } from 'redux';

export const rootReducer = combineReducers({
  auth,
  device,
  global,
  menu,
...
});

在上面(简化的)示例中,所有文件的结构如下:

/redux/
  /auth/
    authActions.js
    authReducer.js
  /device/
    deviceActions.js
    deviceReducer.js
  /global/
    globalActions.js
    globalReducer.js
  /menu/
    menuActions.js
    menuReducer.js
  ...

在这个index.js文件中,如果我可以动态读取redux目录中的所有目录,并动态要求导出actions和reducers,那么维护起来会容易得多。

在常规节点环境中,我会执行类似的操作(未测试,但说明了示例):

import fs from 'fs'
import path from 'path'
import { combineReducers } from 'redux'

let actions = []
let reducers {}

fs
  .readdirSync(__dirname).filter((file) => {
    // Only directories
    return fs.statSync(path.join(__dirname, file)).isDirectory();
  })
  .forEach((module) => {
    const moduleActions = require(path.join(__dirname, module, `${module}Actions.js`);
    const moduleReducer = require(path.join(__dirname, module, `${module}Reducer.js`);

    actions.push(moduleActions)
    reducers[module] = moduleReducer.default
  });

export actions
export const rootReducer = combineReducers(reducers)

问题是fsmodule 不是react-native 中能够动态迭代代码库中的目录的东西。有react-native-fs,但那是为了实际访问设备上的文件系统(在编译应用程序之后)[我认为?]。上面的内容比单独要求所有操作和化简器并在操作数组和化简器对象中指定它们要干净得多。

有任何想法吗?


React-Native 不支持动态加载模块。所有 javascript 文件都捆绑到一个 js 文件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 动态列出/需要目录中的文件 的相关文章

随机推荐

  • .NET Core IServiceScopeFactory.CreateScope() 与 IServiceProvider.CreateScope() 扩展

    我的理解是 当使用内置的依赖注入时 NET Core 控制台应用程序将要求您自己创建和管理所有范围 而 ASP NET Core 应用程序将创建和管理HttpRequest默认情况下通过定义的中间件作用域 使用 ASP NET Core 您
  • Tomcat 中的会话管理

    我开发了一个简单的 Web 应用程序 其中包含 2 个 servlet A 和 B 我对 Tomcat 的网络应用程序的会话管理有一些疑问 注意 在访问网络应用程序时 我在网络浏览器 Chrome 中禁用了 cookie 1 当第一次访问
  • 更改 WordPress 图像 URL

    在我的 WordPress 网站上 我的所有图像都显示为损坏的链接 它们还在 WordPress 后端的媒体库中显示为损坏的链接 我使用 Google Chrome 检查了这些图像 发现它们都像这样显示 img src http firou
  • 平台 pinvoke 教程 msdn

    以下是来自的教程msdn http msdn microsoft com en us library aa288468 28v vs 71 29 aspx 在教程中 flushall 的输出是 Test 但我通过使用 console wri
  • 仅包含与递归差异中给定模式匹配的文件

    如何对两个目录 a 和 b 中的文件执行递归比较 diff r a b 但只查看名称与给定模式匹配的文件 例如 使用 find 命令中可用的相同语法 如下所示 diff r a b name crazy 这将显示 a 和 b 中具有相同名称
  • 在 Rails 中的视图之间传递变量

    我一直在试图弄清楚如何在两个视图之间传递变量 并且我已经查看了堆栈溢出的所有示例 但似乎无法使其工作 我的用户中有这个 gt index html erb tr td td td td td td td td td td td td tr
  • 如何等待异步委托

    在 MVA 视频之一中 我看到了下一个构造 static void Main string args Action testAction async gt Console WriteLine In await Task Delay 100
  • 使用多字符分隔符分割字符串

    假设我有以下字符串 Hello there My name is Fred I am 25 5 years old 我想把它分成句子 这样我就有了以下列表 Hello there My name is Fred I am 25 5 year
  • Gitlab 部署脚本 - envsubst:找不到命令

    我有一个带有 CI CD 管道的 gitlab 存储库 它有deploy sh脚本 该脚本可以顺利运行 直到envsubst命令 bin bash set e lt gt deploy via ssh SSH ssh o UserKnown
  • 在 xml 内的图像上绘制视图

    你能帮助我分享你关于如何在android中的图像顶部绘制一个小矩形的知识吗 我有 main xml 和一些小部件 在顶部 有一个图像 我想在该图像上绘制一个矩形 并在应用程序运行时显示这两个矩形 我的 xml 文件如下所示
  • 验证 Rails 中多对多关联的唯一性

    说我有Project 即与多对多关联Tag 我在用着有 许多通过所以我有单独的连接模型 如何创建验证来检查连接模型的唯一性 现在我只有 has many tags through gt taggings uniq gt true 但这并不在
  • MVC 应用程序调试时出错:视图状态 MAC 验证失败

    现在开始表单 第一次 当我开始调试 MVC 应用程序时 我收到此错误 视图状态 MAC 验证失败 如果 该应用程序由 Web 托管 农场或集群 确保 配置指定 相同的validationKey和validation 算法 无法使用自动生成
  • 如何使用 NHibernate 高效地进行 TDD?

    在我看来 大多数人在使用 NHibernate 时都会针对内存中 进程内数据库 例如 SQLite 编写测试 我已经启动并运行了它 但我的第一个测试 使用 NHibernate 总是需要 3 4 秒才能执行 下一个测试运行得更快 我使用 F
  • 是否有 gist.github.com 的内部替代方案可以在防火墙后面运行?

    gist github com 非常方便 但我希望能够运行类似的东西来与我工作的防火墙后面的其他开发人员在内部共享代码示例 因此我不需要一直清理我的代码 只讲代码示例 有这样的事情存在吗 我并不追求大型项目管理工具 只是一种制作一次性要点并
  • OpenShift 无法处理某些 Nodejs 依赖项 (Koa)

    我已经结账了如何在 Openshift 中设置 KoaJS https stackoverflow com questions 26924967 how to setup koajs in openshift但它仍然不起作用 这是我的一部分
  • Apache 作为 ubuntu 上的 root

    好的 我需要运行我的 Apache Web 服务器root 为此我输入了whoami 在终端 它给了我输出 root 但是当我通过执行以下 php 脚本检查我的 apache 服务器是否以 root 用户身份运行时 它给了我输出 nobod
  • 从终端安装 npm 错误

    我正在尝试在我的 mac 中安装节点 我收到以下错误 我从节点站点下载了节点并运行了该包 你们能告诉我为什么我会遇到这个错误 当我执行 npm install 时 MacBook Pro Raj npm install npm ERR in
  • Pickle 无法与 tkinter 一起使用

    我正在用 Tkinter 制作一个小游戏 它有一个使用 pickle 的保存功能 但是 当我尝试保存时 它会弹出以下消息 Exception in Tkinter callback Traceback most recent call la
  • 具有嵌套列表的 Terraform 动态块

    我需要使用 Terraform 在 Pagerduty 中创建升级策略 我想动态创建rule块 然后在其中target块的值来自rule 我不知道如何在目标块内进行第二次调用以使其动态 我有一个列表中的团队列表 locals teams d
  • React Native - 动态列出/需要目录中的文件

    我正在使用 Redux 并希望动态包含目录中的所有文件 redux index js Actions import as authActions from auth authActions import as deviceActions f