我目前正在使用 react-redux 的 React Native 開發一個專案。
現在我有一種情況,我想用動態輸入呼叫調度鉤子。但是它只是不起作用,但我在控制臺中沒有收到錯誤訊息。
一些備注:
- 用戶物件包含我要添加到狀態的鍵值對(例如名稱:John Doe)
- 我嘗試了將函式名稱分配給調度掛鉤的多個版本,但都失敗了
誰能告訴我,我做錯了什么?
我目前的代碼:
import {
resetCompleteStoreState,
setAdressCity,
setAdressZipcode,
setEmail,
setName,
setPhone,
} from "../../../app/redux/features/auth/userSlice";
... more Code ...
var functions = new Map();
[setAdressCity, setAdressZipcode, setEmail, setName, setPhone].forEach(
(fn) => {
functions.set("" fn, fn);
}
);
for (let [key, value] of Object.entries(response.data.data.user)) {
if (key.includes("_")) {
var i,
frags = key.split("_");
for (i = 0; i < frags.length; i ) {
frags[i] = frags[i].charAt(0).toUpperCase() frags[i].slice(1);
}
key = frags.join("");
} else {
key = key.charAt(0).toUpperCase() key.slice(1);
}
if (key != "Id") {
stateMethod = functions.get("user/set" key);
dispatch(stateMethod(value));
}
}
uj5u.com熱心網友回復:
您不能從字串呼叫函式,除非您將它們存盤在某個進行翻譯的物件中
像這樣
import {
resetCompleteStoreState,
setAdressCity,
setAdressZipcode,
setEmail,
setName,
setPhone,
} from "../../../app/redux/features/auth/userSlice";
... more Code ...
const functions = new Map()
[ setAdressCity,
setAdressZipcode,
setEmail,
setName,
setPhone].forEach(fn => {
functions.set(fn.name, fn)
})
for (let [key, value] of Object.entries(response.data.data.user)) {
if (key.includes("_")) {
var i,
frags = key.split("_");
for (i = 0; i < frags.length; i ) {
frags[i] = frags[i].charAt(0).toUpperCase() frags[i].slice(1);
}
key = frags.join("");
} else {
key = key.charAt(0).toUpperCase() key.slice(1);
}
if (key != "Id") {
// dispatch("user/set" `${key}` `(${value})`);
// dispatch(`set${key}`(`${value}`));
test = functions["set" key];
console.log(test);
dispatch(test(`${value}`));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475088.html
標籤:javascript 反应式 反应还原 动态规划
