immutable과 redux, 깊은복사에 대해서 리턴값에 대한 차이가 무엇입니까

const initState = {mode:'hello',

selected_id:null,

contents:[

{id:1, title:'stack', desc:'stack is ...'},

{id:2, title:'overflow', desc:'overflow is ...'}

]

}let newState = {};

if(action.type === 'CREATE'){

const newContents = {...state.contents};

const newContent = {id:3, title:'stack-overflow', desc:'stack-overflow is ...};

newContents.push(newContent);

(… I have a Question about return value …)
(저는 리턴값에 대해 질문이 있습니다)

}-----------------------

  1. When I’m usually use redux,(제가 리덕스를 사용할때)

newState = {...state, {contents:newContents}}

is it alright?
이게 맞아요?

or,
아니면

newState_real = {...state, {contents:state.contents.concat()}, {contents:newContents} }


why do I ask you this,
내가 이것에 대해 왜 질문하냐면,

DESCRIPTION 1

const newState = {...state};

state === newState //false

state.contents === newState.contents //true

DESCRIPTION 2

const newState_ex = {...state, {contents:state.contents.concat()} };

state === newState_ex //false

state.contents === newState_ex.contents //false

for keeping immutable,
불변함을 유지하기 위해서

I think that DESCRIPTION 2 is alright
저는 2가 맞다고 생각해요

but, I used to use DESCRIPTION 1,
그런데 1번을 여태 사용해왔어요

in spite of using DESCRIPTION 1, I can do redux-devtool:timetravling
1번을 사용함에도 불구하고, 저는 리덕스데브툴의 타임트레블링도 사용가능했고요

What should I do?
어떻게 해야합니까?


다시 질문요약

  1. 리덕스를 사용함에 있어서 완전한 복제까지는 필요 없는 것이겠지요?
    state.contetents.concat()까지 해야하나요?

  2. contents는 state와 반환될 newState이 둘다 참조하고 있어서
    원복복제가 아니라 원본을 교체하고 있던데
    이러면 나중에 문제가 되지 않을까요?(잘 몰라서 하는 말입니다)
    ( 왜 이렇게 생각하냐면, 리덕스는 불변성을 유지한다고 들어서…
    object형 객체(contents)는 불변성이 안되고 참조만 하고 있더라고요
    )

  3. return newState= {…state, {content:state.contents.concat()}, {contents:newContents}을 해서 얻는 이점과
    그냥 {…state, {contents:newContents}을 통해서 얻는 이점은 어떻게 다른가요?
    3번이 제일 핵심이 되겠네요!

redux를 쓰시는 특별한 이유가 있으신가요? 아주 특별한 이유가 있는게 아니라면 redux가 아닌 다른 방법을 찾아보시길 추천합니다. 많은 경우 redux 보다는 다른 방법을 이용하시는게 좋다고 생각합니다. redux toolkit이 나오면서 전보다는 코드가 간결해지긴 했지만 불필요하게 코드를 작성하기 어렵고 이해하기 어렵게 만듭니다.

redux를 사용하신 이유에 대해서 자세히 알려주시면 redux대신 사용을 고려해볼만한 툴들을 알려드릴게요.