#reactjs #redux #signalr
Вопрос:
Я сталкиваюсь со странным поведением, когда один объект в состоянии полностью удаляется, когда действие обновляет другой. Объяснять:
У меня есть это начальное состояние:
logs: [],
simpleWifi: {
thermostats: [],
fetchedThermostats: []
},
workspace: {
userWorkspaces: [],
focusedWorkspace: { id: 1 } as Workspace
}
Начальное состояние работает нормально, все присутствует. Однако, когда я (через концентратор SignalR) получаю рабочие пространства пользователей, focusedWorkspace удаляется из состояния. Я не уверен, почему это именно так, и почему это только удаляет это из штата?
Я определил рабочее пространство, которое имеет:
const workspace: Workspaces = {
userWorkspaces: [],
focusedWorkspace: null
};
export const workspaceReducer: Reducer<Workspaces> = (state: Workspaces | undefined, incomingAction: Action): Workspaces => {
if (state === undefined) {
return workspace;
}
const action = incomingAction as KnownAction;
switch (action.type) {
case "RECEIVE_ALL_USER_WORKSPACES":
return {...state, userWorkspaces: action.workspaces };
case "NEW_FOCUSED_WORKSPACE":
return {...state, focusedWorkspace: action.focused };
default:
return state;
}
};
По какой-то причине, когда RECEIVE_ALL_USER_WORKSPACES отправляется, focusedWorkspace становится неопределенным, а затем в конечном итоге полностью удаляется из состояния (даже изначально заданное значение по умолчанию).
EDIT1: Отправка узла SignalR выглядит следующим образом, при этом определяется рабочее пространство получателя:
workspaceHub.on("ReceiveUserWorkspaces", (workspaces: Workspace[]) => {
store.dispatch({ type: "RECEIVE_ALL_USER_WORKSPACES", workspaces } as ReceieveUserWorkspaces);
});
export interface ReceieveUserWorkspaces {
type: "RECEIVE_ALL_USER_WORKSPACES",
workspaces: Workspace[]
}
Список рабочих областей:
[
{
"id": 1,
"name": "Global",
"category": "Global",
"userID": null,
"thermostats": []
},
{
"id": 7,
"name": "Test",
"category": "Test",
"userID": "asdf",
"thermostats": []
}
]
Комментарии:
1. Можете ли вы показать содержимое объекта
RECEIVE_ALL_USER_WORKSPACES
действия при его отправке?2. @markerikson отредактировал вопрос