redux-toolkit中的dispatch(..).unwrap()是什么?

44u64gxh  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(321)

来自redux教程:

const onSavePostClicked = async () => {
  if (canSave) {
    try {
      setAddRequestStatus('pending')
      await dispatch(addNewPost({ title, content, user: userId }))
        .unwrap()
    } catch (err) {
      console.error('Failed to save the post: ', err)
    } finally {
      setAddRequestStatus('idle')
    }
  }
}

dispatch(addNewPost({ title, content, user: userId }))将返回这样的promise:

state: "fulfilled"

result: fulfilled action object

dispatch(addNewPost({ title, content, user: userId })).unwrap()也会返回一个promise。
那么不带unwrap的promise和带unwrap的promise有什么区别呢?

state: "fulfilled"

result: ?
ct2axkht

ct2axkht1#

dispatch(addNewPost({ title, content, user: userId }))将解析为该形实转换程序调度的最新操作。
对于.unwrap(),它将解析为fulfilled操作的值,或者抛出rejected操作。
这里的想法是,你应该能够dispatch一个asyncThunk,而不必每次都捕获它,但只有当你真的想基于它编写更多逻辑时。

相关问题