Dva: 请问如何通过返回值做全局消息

Created on 1 Nov 2016  ·  12Comments  ·  Source: dvajs/dva

通过接口异步请求数据 返回的数据内容是用户操作成功与否 比如这样

const {data} = {
    result: 1000,
    message: 'success',
};

请问如何监听返回结果 再通过message.success(...)做全局消息?

question

Most helpful comment

@anhuiliujun 使用 dva-loading,然后封装一个 react 组件,监听 loading state,执行 message.load 等方法。

All 12 comments

const {data} = {
    result: 1000,
    message: 'success',
};

没理解这句是什么意思。在 effect 中拿到结果后,调 message.success 不就好了吗?

示例如下: 管理员修改个人信息

const { data } = yield call(modifyAdminInfo, payload);
if(data){
  yield put({
    type: 'querySuccess',
    payload: {
      result: data
    }
  });
}

effect得到数据后 如何在Component AdminInfo中监听result的变化 然后调用message.success或者message.error?

为啥要在 AdminInfo 里监听 result 的变化,不能在 effect 里做?

我想的是effect的作用仅仅只是put/call reduce 对于数据的渲染和交互(如message)我认为应该放到Component中 不知道我这样的理解对不对...
这个问题在详细一点: 用户点击修改信息后 调用message.load(...) 数据响应后应该在什么位置调用message.success(...) 就酱紫

这个和我之前的疑问是类似的,命令调用型的 API 使用方式。

抱歉我不是很明白你的意思... 有没有实例可以让我参考一下?

我的意思是我也有同样的疑问。

message 方法应该放在 effect 里,这是触发一个 action 之后要做的事。

如何做全局的loading显示呢?我不想再每个effect里都去写一个message.load,最好能在一个地方统一处理,就像dva-loading做了全局的loading一样,我怎么样在loading的时候显示一条message.loading信息,等结果回来的时候,关闭这个loading信息呢?

@anhuiliujun 使用 dva-loading,然后封装一个 react 组件,监听 loading state,执行 message.load 等方法。

@sorrycc 感谢赐教,我在所有组件的最上层包一层组件,做全局的处理,这样应该可以吧

也可以的。

Was this page helpful?
0 / 5 - 0 ratings