인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

stefan CHO님의 프로필 이미지
stefan CHO

작성한 질문수

React로 NodeBird SNS 만들기

4-13. 게시글 작성 리덕스 사이클

spread 문법에 대한 질문

해결된 질문

작성

·

160

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
질문자

감사합니다!

0

stefan CHO님의 프로필 이미지
stefan CHO
질문자

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

영상 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
stefan CHO님의 프로필 이미지
stefan CHO

작성한 질문수

질문하기