Я новичок в синтаксисе redux и es6. Здесь проблема:Обновление состояния в redux
Существует приложение с несколькими сообщениями.
const initialState = {
items: {
3: {title: '1984'},
6: {title: 'Mouse'},
19:{title: 'War and peace'}
}
}
App получить массив понравившихся постов идентификаторов:
dispatch(receiveLikedPosts(3, {id:3, ids: [3,6]}));
function receiveLikedPosts(ids) {
return {
type: LIKED_POSTS_RECEIVED,
ids
};
}
Там является редуктор сообщений:
function posts(state = initialState, action) {
switch (action.type) {
case LIKED_POSTS_RECEIVED:
// here I need to update my posts state: post.liked => true (only 3 and 6 post)
default:
return state;
}
}
1) я должен обновить свои восстановителей LIKED_POSTS_RECEIVED кода. Не знаю, как это сделать правильно.
2) Правильно ли отправлять события несколько раз? (Одна диспетчерская для каждого понравившегося поста)
Вот код:
// action
let ids = [3,6]
for (let id of ids) {
dispatch({type: LIKE, id});
}
// reducers
function post(state, action) {
switch (action.type) {
case LIKE:
return Object.assign({}, state, {
liked: true
});
default:
return state;
}
}
function posts(state = initialState, action) {
switch (action.type) {
case LIKE:
return Object.assign({}, state, {
[action.id]: post(state[action.id], action)
});
default:
return state;
}
}
действия не должны вызывать другие действия, но сама передача многих действий - это не плохо. – dandavis
Действия @dandavis «не должны вызывать другие действия» - если вы не используете thunks. – ffxsam