на основе учебника на youtube (https://www.youtube.com/watch?v=hiiaHyhhwBU&t=1195s) Я пишу приложение чата, используя перехватчики реакции, в частности useReducer (). Но я не понимаю, как в случае переключения возвращается обновленная версия состояния, сохраняющая только два элемента и не добавляющая третий элемент в initState:
const initState = {
general: [
{from: 'ciro', msg: 'bella'},
{from: 'ciro', msg: 'bella'},
{from: 'ciro', msg: 'bella'}
],
private: [
{from: 'gennaro', msg: 'hello'},
{from: 'gennaro', msg: 'hello'},
{from: 'gennaro', msg: 'hello'}
]
}
const reducer = (state, action) => {
const { topic, from, msg } = action.payload;
switch(action.type) {
case 'RECEIVE_MESSAGE':
return {
...state,
[topic]: [
...state[topic],
{
from: from,
msg: msg
}
]
}
default:
return state;
}
}
Интересно, как [topic ] может обновлять список сообщений, соответствующий топи c, поскольку он не связан напрямую с ... состоянием? а как в ... состояние не просто добавить третий элемент? Я нахожу это очень запутанным.
return {
...state,
[topic]: [
...state[topic],
{
from: from,
msg: msg
}
]
}
Спасибо за вашу помощь