簡體   English   中英

當函數名稱為保留字時,如何使用Redux Saga“調用”函數?如何鏈接函數調用?

[英]How can I use Redux Saga “call” function when the function name is a reserved word and how do I do chained function calls?

 yield action.user.delete() && database.ref(url).remove()

我需要在使用Firebase函數的redux-sagas中的兩個函數中使用call() action.user.delete() ,我無法yield {delete} = action.usercall([action.user, delete]) ,因為delete是保留字。 而且在database.ref(url).remove() ,我不知道如何對鏈接函數使用call()

有兩種語法選項可將delete作為保留字處理:

  • 將函數名稱的字符串傳遞給call方法
  • 在具有不同名稱的變量中獲取對delete函數的引用

這兩個選項如下所示。

對於鏈接函數,您只需將鏈拆分為單獨的調用,然后使用一個調用的結果執行下一個調用。 在兩個delete示例之后,我提供了一個進行鏈接調用的示例。

import { call } from "redux-saga/effects";

const refResponse = {
  remove: () => {
    console.log("You removed me!");
  }
};
const action = {
  user: {
    delete: () => {
      console.log("You deleted me!");
    }
  }
};
const database = {
  ref: () => {
    console.log("Returning ref");
    return refResponse;
  }
};
export const starter = function*() {
  console.log("before call");
  yield call([action.user, "delete"]);
  console.log("after call using string for function name");
  const deleteFunc = action.user.delete;
  yield call([action.user, deleteFunc]);
  console.log("after call using function variable");

  console.log("before start of chained call");
  const result = yield call([database, "ref"]);
  console.log("before 2nd part of chained call");
  yield call([result, "remove"]);
};

編輯9470nnlwmy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM