1

嗨,大多数 React 开发人员会发现 dvaJS 和 umiJS,它们是状态管理和应用程序开发的天堂。Dva 是elm基于状态管理的工具,react-redux用于状态管理。

Q:在UMI应用程序中,组件外或无组件时如何访问DVA Store connect

问:如何dispatch在 UMI 应用程序中进行 DVA 存储,在组件之外或没有组件connect

4

3 回答 3

2

Q:在UMI应用程序中,组件外或无组件时如何访问DVA Store connect

答:https ://v2.umijs.org/guide/with-dva.html#how-to-access-store-or-dispatch

它说使用:

window.g_app._store

问:如何dispatch在 UMI 应用程序中进行 DVA 存储,在组件之外或没有组件connect

答:https ://v2.umijs.org/guide/with-dva.html#how-to-access-store-or-dispatch

它说使用:

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

奖金:

问:如何get state of在 UMI 应用程序中进行 DVA 存储,在组件之外或没有组件connect

答:https ://v2.umijs.org/guide/with-dva.html#how-to-access-store-or-dispatch

它说使用:

window.g_app._store.getState()

可用功能:

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

推荐:不要直接使用,写一个导出这些函数的Util。

于 2020-07-24T11:55:37.033 回答
1

要在 UMI 应用中访问或调度 DVA 商店,您可以在功能组件中使用 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})
于 2020-10-21T02:21:24.413 回答
1

作为和额外的参考以及那些在使用时搜索在组件上下文dva之外访问应用程序参考的人:react

  • umi.js v3+
  • 连同dva 2.6+(根据框架兼容性)

您可以使用getDvaApp导出的方法:

import { getDvaApp } from 'umi';

const dispatch = getDvaApp()._store.dispatch;

// use the `dispatch`
于 2021-12-30T11:30:27.533 回答