我有一個對象,如:{ categories: { Professional: { active: false, names: [ { id: 1, name: "Golf", active: false }, { id: 2, name: "Ultimate Frisbee", active: false } ] }}我想categories.Professional.active用true,更新到我擁有的減速器中:return { ...state, categories: { ...state.categories, Professional: { ...state.categories.Professional, active: true } }}現(xiàn)在我想編寫一個用于擴展對象的函數(shù)并通過 json 路徑更新單個屬性。例如。return deepPatch(state, 'categories.Professional.active', true);該函數(shù)的目標deepPatch是在運行時構(gòu)建此結(jié)構(gòu):return Object.assign({}, obj, { categories: Object.assign({}, state.categories, { Professional: Object.assign({}, state.Professional, { active: true }) })});我試過但不知道如何進行遞歸傳播:function deepPatch(obj: any, path: string; value: any){ const arrayPath: string[] = path.split('.'); const currObj = null; for (let i = 0, e = arrayPath.length; i < e; i++) { const currPath = arrayPath[i]; currObj = obj[currPath]; currObj = Object.assign({}, currObj, ???); } return currObj;}
NGRX/REDUX:通過 json 路徑更新深層對象中的值
慕桂英546537
2021-06-29 08:51:37