У меня есть веб-приложение, которое получает обновление от websocket, например, 100 сообщений в секунду.
Я использую неизменный помощник и пробовал это
const parentIndex = action.payload.data.findIndex( i => i.id===action.id)
if(parentIndex !== -1) {
const childIndex = action.payload.data[parentIndex].child.findIndex(c=>i.id===action.childId)
if(child !== -1) {
const lastChildIndex = action.payload.data[parentIndex].child[childIndex].lastChild.findIndex(l=>l.id===action.lastChildId)
return lastChildIndex=== -1
? update(state, { // insert
data: {
[parentIndex]: {
child: {
[childIndex]: {
lastChild: {
$push: [{
parentId: action.id,
childId: action.childId,
lastChildId: action.lastChildId,
price: action.payload.price
}]
}
}
}
}
}
})
: update(state, { // update
data: {
[parentIndex]: {
child: {
[childIndex]: {
lastChild: {
[lastChildIndex]:{
price: { $set: action.payload.price},
isUpdated: { $set: true}
}
}
}
}
}
}
})
}
}
Пример данных:
data = [
{
parentId: 123,
itemName: 'John Doe',
child: {
childId: 456,
childName: 'I am child one',
lastChild: {
lastChildId: 789,
price: 143
}
}
},
{
parentId: 321,
itemName: 'John Wick',
child: {
childId: 654,
childName: 'I am child wick',
lastChild: {
lastChildId: 987,
price: 44
}
}
}
]
Похоже, это работает как минимум с 5 массивами данных, но когда данных больше 15, браузер работает медленно, происходит утечка памяти и вскоре происходит сбой.
Поиск индексакаждый раз, когда появляется сообщение о том, что приложение будет загружено в приложение, оно будет убивать браузер.
Я использую Redux-Thunk в качестве промежуточного программного обеспечения.
Если вы можете порекомендовать мне что-то, что будет обновляться / вставляться быстрее,лучший способ и бесшовные.Это было бы очень круто.