На самом деле вы никогда ничего не вставляете в msgStore
, только в msgs
массивы ... Что само по себе не реактивно.
В вашем случае проще всего использовать доступное для записи хранилище:
const msgs = []
export const msgStore = writable([])
socket.onmessage(e => {
...
msgs.push(msg)
msgStore.set(msgs)
})
Вы можете защитить от внешнего отпуска, экспортировав его производное вместо хранилища с возможностью записи:
export const publicMsgStore = derived(msgStore, x => x)
Или, чтобы сделать это за один шаг с читаемым хранилищем, вам нужно это чтобы обернуть всю логику c:
export const msgStore = readable([], set => {
const msgs = []
...
socket.onmessage(e => {
...
msgs.push(msg)
set(msgs) // <= UPDATE THE STORE!!
})
})
Вам необходим вызов встроенной функции set
, чтобы изменить значение читаемого хранилища (или уведомить его об изменении его значения).