Я работаю над файлом редуктора, который выглядит следующим образом:
export default (state = [], action) => {
let index
switch (action.type){
case "ADD_QUOTE":
return [...state,action.quote]
case "REMOVE_QUOTE":
return state.filter(q=>q.id !==action.quoteId)
case "UPVOTE_QUOTE":
index = state.findIndex(quote => quote.id === action.quoteId);
let quote = state[index];
return [
...state.slice(0, index),
Object.assign({}, quote, { votes: quote.votes += 1 }),
...state.slice(index + 1)
];
default:
return state
}
}
У меня есть два способа реализовать регистр UPVOTE_QUOTE
, первый в приведенном выше коде, а второй выглядит следующим образом это:
...
case "UPVOTE_QUOTE":
let quote = state.find(q=>q.id===action.quoteId)
quote.votes +=1
return state
...
Интересно, в чем разница. И во второй ситуации я не уверен, если я изменю свойство votes
в этом одном элементе quote
в state
, когда я верну state
, будет ли это состояние с новым quote
? И это state
оригинал state
или новый state
, который относится к новому месту? Очень смущен ...