私はReduxを使用しており、ディレクトリ内のすべてのファイルを動的にインクルードしたいと考えています。上記(簡体字)の例ではReact Native - ディレクトリ内のファイルを動的に一覧表示する/要求する
/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ディレクトリ内のすべてのディレクトリを動的に読み取ることができ、動的にアクションとレデューサーをエクスポートする必要があります。通常のノード環境で
(テストしますが、一例を示していない)のように、私は何かをするだろう。問題はfs
モジュールが反応し、ネイティブのように中のものではないということです
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)
コードベース内のディレクトリを動的に反復することができます。 react-native-fsがありますが、それは実際にデバイス上のファイルシステムにアクセスするためです(アプリケーションがコンパイルされた後)[私は思いますか?]上記は、アクションとレデューサーのすべてを個別に要求し、それらをactions配列とレデューサーオブジェクトで指定するよりはるかにクリーンです。
アイデア?