Daniil
это конечно дорогая операция, но смотря как у тебя все построенно по ключам дешевле если из не менять (по содержимому)
Daniil
просто удалил ключ минималный и все
Alexander
Ребят, а как принято в реакте работать с title? Менять их в зависимости от страницы? Единственный title находится в index.html
Sergey
Daniil
я не понимаю твою задачу зачем менять id+1 или что ты хочешь делать
Daniil
накидай мелкий пример в сандбоксе так будет проще наверно
Daniil
все что я понял что есть какие-то задачи есть какие то id и есть какие-то аккаунты и что-то нужно менять, но как все взаимосвязанно я не понял
Dmitry
У меня есть стейт
services: [
{id: 1, name: 'Элемент 1', description: 'Описание элемента 1', checked: false},
{id: 2, name: 'Элемент 2', description: 'Описание элемента 2', checked: false},
{id: 3, name: 'Элемент 3', description: 'Описание элемента 3', checked: true},
{id: 4, name: 'Элемент 4', description: 'Описание элемента 4', checked: false},
]
Мне нужно как-то заменить true на false
Dmitry
case ON_SERVICE_SELECT:
return {
...state, services: [
...state.services, ............
]
};
Dmitry
Как правильно это сделать?
Dmitry
Я могу сначала скопировать массив, а потом заменить его целиком
Daniil
я бы делал через мап
Daniil
самый простой способ мне кажется
Daniil
services = services.map(e => ({...e, checked:false})) что-то типа того
Vitaliy
Привет всем, у меня такая проблема, подскажите пожалуйста что можно сделать
Vitaliy
Вот скрин с index,js на всякий
Daniil
ошибка в том что нельзя вызову функции что-то присвоить (он сам возвращает значение)
Vitaliy
А куда тогда можно observer присвоить?
O1af
Daniil
да кстати может в этом дело
O1af
возьми обьект метода и присвой ему что то
Владислав
Народ, на мобилах есть события mousedown и mouseup?
Daniil
нет там тачи
Vitaliy
Хорошо, спасибо попробую.
O1af
Vitaliy
Помогло, спасибо👍
Daniil
как заменить?
Владислав
альтернативы mouseup есть?
Daniil
touchup или что-то в этом роде, обычно полифилы используют, так как не все там просто, в разных браузерах немного иначе может быть
Владислав
ок, спасибо
Dmitry
services.map(e => ({...e, checked: action.checked}))
А как поменять checked только у объекта с id = 3?
O1af
Dmitry
?
Dmitry
это массив
services: [
{id: 1, name: 'Элемент 1', description: 'Описание элемента 1', checked: false},
{id: 2, name: 'Элемент 2', description: 'Описание элемента 2', checked: false},
{id: 3, name: 'Элемент 3', description: 'Описание элемента 3', checked: true},
{id: 4, name: 'Элемент 4', description: 'Описание элемента 4', checked: false},
]
Michail
Подскажите, что подразумевается под SideEffect в реакт
O1af
это массив
services: [
{id: 1, name: 'Элемент 1', description: 'Описание элемента 1', checked: false},
{id: 2, name: 'Элемент 2', description: 'Описание элемента 2', checked: false},
{id: 3, name: 'Элемент 3', description: 'Описание элемента 3', checked: true},
{id: 4, name: 'Элемент 4', description: 'Описание элемента 4', checked: false},
]
можно перебрать циклом и проверить ифом на соответствие
Dmitry
циклом то я знаю как)
Dmitry
for (let i in services) {
if (services[i].id == action.id) {
services[i].checked = action.checked;
break;
}
}
Vlad
это массив
services: [
{id: 1, name: 'Элемент 1', description: 'Описание элемента 1', checked: false},
{id: 2, name: 'Элемент 2', description: 'Описание элемента 2', checked: false},
{id: 3, name: 'Элемент 3', description: 'Описание элемента 3', checked: true},
{id: 4, name: 'Элемент 4', description: 'Описание элемента 4', checked: false},
]
какое задание?
Vlad
повтори плиз
Dmitry
Есть массив
services: [
{id: 1, name: 'Элемент 1', description: 'Описание элемента 1', checked: false},
{id: 2, name: 'Элемент 2', description: 'Описание элемента 2', checked: false},
{id: 3, name: 'Элемент 3', description: 'Описание элемента 3', checked: true},
{id: 4, name: 'Элемент 4', description: 'Описание элемента 4', checked: false},
]
Я хочу по id менять checked c помощью map
Dmitry
типа того
for (let i in services) {
if (services[i].id == action.id) {
services[i].checked = action.checked;
break;
}
}
Dmitry
services.map(e => ({...e, checked: action.checked})) - эта штука меняет checked у всех
Dmitry
надо как-то в неё условие вставить
Vlad
так запусти проверку внутри мапа
Vlad
через тернарный оператор
Vlad
item.id === 3 ? item.id = action.checked : item
Vlad
или как там у тебя)
Vlad
получилось?) или нет
Vlad
O1af
Vlad
яп
"памяти много нужно" - на какую операцию?
O1af
Dmitry
services.map(e => {
if (e.id == action.id) {
e.checked = action.checked
}
return e
})
Vlad
можно проще
Vlad
так стоп)
Vlad
тебе нужно вернуть что?)
Alexander
Книга про реак и редакс есть в epub у кого-нибудь, в PDF на телефоне не очень удобно читать
Vlad
services.map(e => e.id == action.id ? e.checked = action.checked : e);
O1af
ed.id==action.ld?e.ch=act.ch вместо ифа
Vlad
вот так можно
Vlad
если в мапе в 1 строчку всё пишешь, то можно без фигурных скобок и без слова return
Dmitry
Vlad
Dmitry
e.checked = action.checked вернет true
Dmitry
и вернется не элемент а true
Vlad
нет, там ведь присвоение
Vlad
там не сравнивнение
Dmitry
да
Dmitry
и его результат true
Dmitry
хотя это же JS)
Vlad
сейчас проверим)
Dmitry
А, вернется e.checked
Dmitry
а не е