Как получить доступ к 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`