Redux: Object.assign으로 객체 복사

  • 마지막 게시물은 배열과 함께 작동했지만 상태가 객체일 때 상태 불변성을 강화하는 데 도움이 되는 방법이 있습니다. 개체를 처리하는 데 유용한 도구는 Object.assign()입니다.
  • Object.assign()는 대상 개체와 소스 개체를 가져와서 소스 개체의 속성을 대상 개체에 매핑합니다. 이것은 빈 객체를 첫 번째 인수로 전달하고 그 뒤에 복사하려는 객체를 전달하여 객체의 얕은 복사본을 만드는 데 사용됩니다.
  • 예:

  • const myObject = Object.assign({}, obj1, obj2);
    


  • 그러면 myObjectobjectobj1에 현재 존재하는 속성을 포함하는 새 obj2 로 생성됩니다.
  • 코드:

  • const defaultState = {
      user: 'CamperBot',
      status: 'offline',
      friends: '732,982',
      community: 'freeCodeCamp'
    };
    
    const immutableReducer = (state = defaultState, action) => {
      switch(action.type) {
        case 'ONLINE':
          // Don't mutate state here or the tests will fail
          return
        default:
          return state;
      }
    };
    
    const wakeUp = () => {
      return {
        type: 'ONLINE'
      }
    };
    
    const store = Redux.createStore(immutableReducer);
    


  • 여기에는 object 상황을 처리하기 위해 수정된 Redux 상태 및 작업이 있습니다. state 속성을 문자열 ONLINE로 설정하는 status 유형의 작업에 대해 새 online 개체를 반환하도록 코드를 편집해야 합니다.

  • *대답:

    const defaultState = {
      user: 'CamperBot',
      status: 'offline',
      friends: '732,982',
      community: 'freeCodeCamp'
    };
    
    const immutableReducer = (state = defaultState, action) => {
      switch(action.type) {
        case 'ONLINE':
          const myObject = Object.assign({}, state, {status: 'online'})
          return myObject;
        default:
          return state;
      }
    };
    
    const wakeUp = () => {
      return {
        type: 'ONLINE'
      }
    };
    
    const store = Redux.createStore(immutableReducer);
    


    Larson, Q., 2019. 프런트엔드 개발 라이브러리. [온라인] Freecodecamp.org. 이용 가능: https://www.freecodecamp.org/learn/front-end-development-libraries/redux

    좋은 웹페이지 즐겨찾기