• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

spread 문법에 대한 질문

20.04.27 01:11 작성 조회수 106

0

현재 state 를 덮어쓸때 사용할 수 있는 spread문법에 대해서 헷갈리는 부분이 있어 질문드립니다.

let arr={

       user:[{

                   id: "", pass:0}]

}

const dummy = {  id:"cho"  }

var arr2 = { user: [ ] }

arr2. user = { ...arr.user, dummy}

console.log(arr2)

를 콘솔에서 돌려봤을때, 의도는 id, pass가 arr이고 거기에 dummy id가 덮어씌워지게 하고싶은데, 그냥 어레이가 추가가 되어버리는데, 어디가 잘못된걸까요?

mainPost = [...state.mainPost] 내용보다가 해본건데, 제가 뭘 잘못쓴건지 잘 모르겠습니다...

arr2. user = { ...arr.user[0], dummy}으로 바꿔도 원하는 결과가 안나오네요.

답변 4

·

답변을 작성해보세요.

1

아 제 코드는 기존 걸 변경하는 게 아니고요. 기존 포스트가 하나 있었다면 거기에 추가로 한 개를 추가하는 코드입니다. 지금 나오는 결과가 맞는 행동이고요. 실제로 서비스할 때는 이제 더미는 쓰지 않아도 됩니다.

1

const arr2 = {
   ...arr,
  user: [
     { ...arr.user[0], id: dummy.id },
     ...arr.user.slice(1),
  ],
}

하셔야 합니다.

0

stefan CHO님의 프로필

stefan CHO

질문자

2020.04.27

감사합니다!

0

stefan CHO님의 프로필

stefan CHO

질문자

2020.04.27

답변 감사드립니다. 말씀하신대로 하닌깐 되네요. 근데 아직 잘이해가 안되는 부분이 있어서요.

영상 1분 38초부터 mainPost값을 새로 넣어주는데, 제가 똑같이(?) 만들어서 콘솔 띄워보닌깐 user가 그냥 어레이 2개로 나오네요 ㅠㅠ, spread써서 당연하게 될줄알았는데 안되닌깐 당황스럽네요

제가 어디를 잘못생각하고 있는걸까요.

let state ={
    mainPosts:[{
        User:{
            id:1,
            nickname:'chocho'
        },
        content:'first content',
        img:'www.google.com'
    }],
    imagePath:[],
    addPostErrorReason: false,
    isLoadding: false,
}

const dummyPost ={
    User:{
        id:1,
        nickname: 'cho2'

    },
    content:'im dummy'
}
let aa =()=>return{
mainPosts: [dummyPost, ...state.mainPosts]}
}

console.log(aa())
----------------------------------결---과---------------------
  1. {mainPosts: Array(2)}
    1. mainPostsArray(2)
      1. 0:
        1. User:
          1. id1
          2. nickname"cho2"
        2. content"im dummy"
      2. 1:
        1. User:
          1. id1
          2. nickname"chocho"
        2. content"first content"
        3. img"www.google.com"
      3. length2