Object.assign does not update my state (React)
<p>I have an app which has a few users. I would now like to be able to create a new user. So I have created this actionCreator:</p>

<pre><code>export const createUser = (first, last) =&gt; {
    console.log("You are about to create user: XX ");
    return {
        type: 'USER_CREATE',
        first: first,
        last: last,
        payload: null
    }
};
</code></pre>

<p>I am dealing only with first &amp; last names for now. The actionCreator gets its parameters from the container. There is a button which calls the actionCreator like so:</p>

<pre><code>        &lt;button onClick={() =&gt;this.props.createUser(this.state.inputTextFirstName, this.state.inputTextLastName)}&gt;Submit&lt;/button&gt;
</code></pre>

<p>My UserReducer looks like this:</p>

<pre><code>/*
 * The users reducer will always return an array of users no matter what
 * You need to return something, so if there are no users then just return an empty array
 * */
export default function (state = null, action) {

    if(state==null)
    {
        state = [
            {
                id: 1,
                first: "Bucky",
                last: "Roberts",
                age: 71,
                description: "Bucky is a React developer and YouTuber",
                thumbnail: "http://i.imgur.com/7yUvePI.jpg"
            },
            {
                id: 2,
                first: "Joby",
                last: "Wasilenko",
                age: 27,
                description: "Joby loves the Packers, cheese, and turtles.",
                thumbnail: "http://i.imgur.com/52xRlm8.png"
            },
            {
                id: 3,
                first: "Madison",
                last: "Williams",
                age: 24,
                description: "Madi likes her dog but it is really annoying.",
                thumbnail: "http://i.imgur.com/4EMtxHB.png"
            }
        ]
    }

    switch (action.type) {
        case 'USER_DELETED':
            return state.filter(user =&gt; user.id !== action.userIdToDelete);
        case 'USER_CREATE':
            console.log("Action first:" + action.first);
            console.log("Action last:" + action.last);
            Object.assign({}, state, {
                    id: 4,
                    first: action.first,
                    last: action.last,
                    age: 24,
                    description: "Some new Text",
                    thumbnail: "http://i.imgur.com/4EMtxHB.png"
                });
            return state;
    }

    return state;
}
</code></pre>

<p>Now I have a few questions.
1) Is this the proper way to do this, or am I writing bad code somewhere? Keep in mind that I am trying to use Redux here, I am not entirely sure though whether I am not sometimes falling back into <em>React without Redux</em></p>

<p>2) Am I doing the state thing correctly? I initially used a tutorial and am now building upon that, but I am not sure why state seems to be an array: </p>

<pre><code>state = [   &lt;--- Does this mean that my state is an array?
                {
                    id: 1,
                    // and so on ...
</code></pre>

<p>I am very confused by this, since in other Tutorials state is just an object containing other smaller objects and its all done with parentheses { }</p>

<p>3) What would be the best way to create a new user. My Object.assign does not work, it does not update anything, and I am not sure where the mistake lies. </p>

<p>4) And, relatedly, how could I update one individual user or a property of one individual user?</p>