diff --git a/guide/english/certifications/front-end-libraries/redux/copy-an-object-with-object.assign/index.md b/guide/english/certifications/front-end-libraries/redux/copy-an-object-with-object.assign/index.md index 4d8d0c4fed..51d4c96408 100644 --- a/guide/english/certifications/front-end-libraries/redux/copy-an-object-with-object.assign/index.md +++ b/guide/english/certifications/front-end-libraries/redux/copy-an-object-with-object.assign/index.md @@ -3,8 +3,39 @@ title: Copy an Object with Object.assign --- ## Copy an Object with Object.assign -This is a stub. Help our community expand it. +The goal of this challenge is to enforce state immutability when state is an object. -This quick style guide will help ensure your pull request gets accepted. +### Hint 1 +Use the method ```Object.assign({}, obj1, obj2)``` in return. Pass ```state``` as obj1. +### Hint 2 +The obj2 should be the updated ```{key: value}``` pair of your state. + +### Solution +``` +const defaultState = { + user: 'CamperBot', + status: 'offline', + friends: '732,982', + community: 'freeCodeCamp' +}; + +const immutableReducer = (state = defaultState, action) => { + switch(action.type) { + case 'ONLINE': + // to enforce state immutability, return a new state object using Object.assign() method + return Object.assign({}, state, {status: 'online'}); + default: + return state; + } +}; + +const wakeUp = () => { + return { + type: 'ONLINE' + } +}; + +const store = Redux.createStore(immutableReducer); +```