0

ローカル サーバーが稼働している場合にのみ、redux devTools をストアに追加したいと考えています。これは非同期操作であるため、「不完全な」ストアになってしまいます。

サーバーが存在するかどうかを確認する非同期関数:

export async function isReduxDevServerAlive(url,port, secure = false) {
const server = secure ? 'https' : 'http' + `://${url}:${port}`;
try {
    let response = await fetch(server);
    return true;
} catch(error) {
    return false;
}

store.jsスクリプト_

import thunk from 'redux-thunk';
import devTools from 'remote-redux-devtools';
import { isReduxDevServerAlive } from './util/dev'
import { createStore, applyMiddleware, combineReducers, compose } from 'redux';

import * as reducers from './reducers';
import * as constants from './constants';

let composable = [ applyMiddleware(thunk) ];
const reducer = combineReducers(reducers);

if(isReduxDevServerAlive(constants.REDUX_DEV_SERVER, constants.REDUX_DEV_SERVER_PORT))
{
    composable.push(
        devTools({
            name: 'EPP app', realtime: true,
            hostname: constants.REDUX_DEV_SERVER, port: constants.REDUX_DEV_SERVER_PORT,
            maxAge: 30, filters: {blacklist: ['EFFECT_RESOLVED']}
        })
    );
}

const bconfigureStore = (c) => {
        return createStore(reducer,{},compose(...c));
}

export default function configureStore() {
    return bconfigureStore(composable);
}

スクリプトは、サーバーが稼働しているか停止しているかがわかるまで、エクスポートを待機する必要があります。これを達成する方法を教えてください。

4

1 に答える 1

0

ここでconfigureStore行っているように、関数を非同期にして、コールバックでレンダリングを適用するだけです。

ただし、パラメーターに指定された監視を開始するアクションを設定realtimeして、アクションを実行することもできます (明示的にディスパッチするか、ローカルサーバーが「稼働中」の場合)。この場合、監視を開始するためにアプリケーションを再起動する必要はありません。唯一の欠点は、履歴が引き続き保存されることです。パフォーマンスに大きな影響はありませんが、状態に大きなオブジェクトがある場合は RAM を消費する可能性があります。そこにインストルメンテーションを開始/停止する機能を追加できます。falsestartOnredux-devtools-instrument

于 2016-08-05T09:16:53.393 に答える