Как получить доступ к DVA Store в приложении UMI?

Привет, большинство ответственных разработчиков сочли бы dvaJS и umiJS раем для управления состоянием и разработки приложений. Дваelm инструмент управления состоянием на основе react-redux для государственного управления.

Вопрос: Как получить доступ к DVA Store в приложении UMI, вне компонента или без него connect?

Q: Как dispatch DVA Store в приложении UMI, вне компонента или без него connect?

3 ответа

Решение

Вопрос: Как получить доступ к DVA Store в приложении UMI, вне компонента или без него connect?

О: https://v2.umijs.org/guide/with-dva.html

В нем говорится об использовании:

window.g_app._store

Q: Как dispatch DVA Store в приложении UMI, вне компонента или без него connect?

О: https://v2.umijs.org/guide/with-dva.html

В нем говорится об использовании:

window.g_app._store.dispatch('namespace/action')

Бонус:

Q: Как get state of DVA Store в приложении UMI, вне компонента или без него connect?

О: https://v2.umijs.org/guide/with-dva.html

В нем говорится об использовании:

window.g_app._store.getState()

Доступные функции:

asyncReducers: {}
dispatch: ƒ ()
getState: ƒ f()
replaceReducer: ƒ (n)
runSaga: ƒ ()
subscribe: ƒ subscribe(listener)

Рекомендуется: вместо прямого использования напишите утилиту, которая экспортирует эти функции.

Чтобы получить доступ к хранилищу DVA или отправить его в приложение UMI, вы можете использовать крючки DVA в функциональных компонентах без подключения. Его можно использовать только с DVA v2.6.x.

В функциональной составляющей:

  • Магазин доступа:
const state = useSelector(state => state)
// If state in DVA store changed, rendered values in "state" can be changed in page too.

или же

const store = useStore()
const state = store.getState()
// If state in DVA store changed, rendered values in "state" won't be changed in page.
  • Отправка:
const dispatch = useDispatch()
dispatch({type: "namespace/action", payload: 12345})

Как и дополнительная ссылка и для тех, кто ищет доступ к dvaссылка на приложение за пределами reactконтекст компонента при использовании:

  • Umi.js v3+
  • Наряду с dva 2.6+ (согласно совместимости фреймворка)

Вы можете использовать getDvaAppэкспортный метод:

      import { getDvaApp } from 'umi';

const dispatch = getDvaApp()._store.dispatch;

// use the `dispatch`
Другие вопросы по тегам