В реакции-админ получить доступ к магазину редуксов - PullRequest
0 голосов
/ 07 февраля 2019

Мой вопрос связан с act-admin repo.

Я хочу отправить действие вне области действия компонента, чтобы сделать это, I 'Я читал, что Мне нужно получить доступ к самому фактическому хранилищу резервов и напрямую отправить его,

, поэтому я знаю, что у компонента Admin есть initialState проп, но он принимает толькообъект состояния по умолчанию, а не хранилище.Поэтому я не могу создать магазин и передать его.

Мой вопрос:

  • Как получить доступ к избыточному хранилищу компонента Admin?
  • Как я могу отправить действие за пределы компонента при использовании Admin в качестве основного компонента моего приложения?

Моя текущая запись приложения выглядит следующим образом:

<AppLayoutDirection>
    <Admin
      title="My App"
      locale="en"
      dataProvider={dataProvider}
      authProvider={authProvider}
      i18nProvider={i18nProvider}
      theme={themeProvider}
      customSagas={customSagas}
      appLayout={AppLayout}
    >
      {DynamicResource}
    </Admin>
  </AppLayoutDirection>

1 Ответ

0 голосов
/ 07 февраля 2019

Когда вы говорите, что вам нужно отправить действие за пределы области действия компонента, я предполагаю, что оно является реакцией на другое действие, которое было отправлено в прошлом.

В этом случае, это то, что реагирует ...админ вызывает побочный эффект .React-admin обрабатывает побочные эффекты, используя redux-saga .Вот как создать пользовательскую сагу:

// in src/bitcoinSaga.js
import { put, takeEvery } from 'redux-saga/effects';
import { showNotification } from 'react-admin';

export default function* bitcoinSaga() {
    yield takeEvery('BITCOIN_RATE_RECEIVED', function* () {
        yield put(showNotification('Bitcoin rate updated'));
    })
}

Зарегистрируйте эту сагу в компоненте <Admin> следующим образом:

// in src/App.js
import React from 'react';
import { Admin } from 'react-admin';

import bitcoinSaga from './bitcoinSaga';

const App = () => (
    <Admin customSagas={[ bitcoinSaga ]} dataProvider={simpleRestProvider('http://path.to.my.api')}>
        ...
    </Admin>
);

export default App;

Это задокументировано в документации поact-admin, в глава <Admin> .

...