2016-08-18 8 views
1
const initialState: FriendsState = { 
    friends: [] 
}; 

export default function friends(state = initialState, action: Action): FriendsState { 
    switch (action.type) { 
    case TYPES.ADD_TO_FRIENDS: 
     return assign({}, state, { 
     friends: state.friends.push(action.payload.friendId) 
     }) 
    } 
} 

Ich versuche im Grunde eine friendId, die etwas wie 1003 oder etwas in meine Freunde-Array aussieht. Ist das der richtige Weg?Mit TypeScript + Lodash, wie schiebt man etwas in ein Array?

Was ist, wenn ich ein Objekt hinzufügen muss? so etwas wie { friendId: 1003, category: 4 }

export interface Friends { 
    friends: FriendIds[]; 
}; 

interface FriendIds { 
    id: number; 
} 
+0

ich eine Fehlermeldung erhalten, die besagt, 'Typeerror: state.friends.push kein function' ist – user1354934

+1

Dann nehme ich es nicht ein Array ist, wie Sie angenommen. Denken Sie auch daran, dass 'push' das resultierende Array nicht zurückgibt. In manchen Fällen möchten Sie daher 'concat' verwenden. –

+0

Ich glaube, ich definiere mein Array dann falsch. Kannst du mir bitte meinen Schnitt ansehen? – user1354934

Antwort

2

I am basically trying to add a friendId that looks like something like 1003 or something into my friends array. Is that the right way of going about it

Ja push wird dem Array hinzuzufügen.

Allerdings mutiert das Array. Wenn Sie Redux verwenden (docs: http://redux.js.org/), möchten Sie nicht-mutierende Methoden verwenden. z Concat:

const initialState: FriendsState = { 
    friends: [] 
}; 

export default function friends(state = initialState, action: Action): FriendsState { 
    switch (action.type) { 
    case TYPES.ADD_TO_FRIENDS: 
     return assign({}, state, { 
     friends: state.friends.concat([action.payload.friendId]) 
     }) 
    } 
} 
Verwandte Themen