Estoy trabajando en un proyecto y quiero actualizar mis datos en el objeto a continuación. Uso el método _.set de Lodash, por lo que en el futuro este objeto a continuación puede ser cualquier cosa menos un subobjeto como Botones y Contenido son iguales porque esto es necesarios en el sitio web y son diferentes para la plantilla de diferencias.
"content_navData": { "path": ["content", "content_navData"], "logo": { "path": ["content", "content_navData", "logo"], "imgUrl": "https://source.unsplash.com/user/erondu/50x50", "settings": { "class": ["defaultLogo"] } }, "navLinks": { "path": ["content", "content_navData", "navLinks"], "Home": { "path": ["content", "content_navData", "navLinks", "Home"], "title": "Home", "type": "link", "href": "/", "setting": { "class": ["defaultLink"], "isActive": true } }, "About": { "path": ["content", "content_navData", "navLinks", "About"], "title": "About", "type": "link", "href": "/about", "setting": { "class": ["defaultLink"], "isActive": true } }, "Blog": { "path": ["content", "content_navData", "navLinks", "Blog"], "title": "Blog", "type": "link", "href": "/blog", "setting": { "class": ["defaultLink"], "isActive": true } } }, "navButtons": { "LogIn": { "title": "Log in", "type": "button", "setting": { "class": ["defaultButton", "ghostButton"], "isActive": true } }, "SignUp": { "title": "Sign Up", "type": "button", "setting": { "class": ["defaultButton", "ghostButton"], "isActive": true } } } }, Estoy usando reaccionar y redux para la gestión de estado y datos, por lo que no quiero definir el mismo reductor para el objeto de plantilla de diferencias.
Como puede ver aquí, no quiero una ruta codificada para el reductor, así que corté la clave de path en cada objeto que tiene una ruta adecuada para ese obj. ¿Es este el camino correcto para un gran proyecto?
const componentReducer = (state = initialState, action) => { switch (action.type) { case componentEditType.EDIT_DESCRIPTION: return _.set(initialState, ['content', 'hero', 'data', 'description'], action.payload) } }