Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2024, 02:18
Интересующийся
Отправить личное сообщение для acvafor Посмотреть профиль Найти все сообщения от acvafor
 
Регистрация: 03.08.2024
Сообщений: 13

Изменение значений
Подскажите, как поменять title по id?

const [list, setList] = useState([])

const changeStatus = (id) => {
        list.filter((x) => x.id == id).forEach((x)=> {x.title = "#тес2"}) 
    }


changeStatus(передаю id)


Как мне это передать в setlist?

Пробовал через

list.map(obj =>{
                if(obj.id === id){      
                    obj.title = id
                 }
})


Тоже не понял как передать в setlist

Сама структура данных
[{"color": "black", "done": false, "dscr": "", "id": "0.886308390783848", "title": "1"}, {"color": "black", "done": false, "dscr": "44", "id": "0.060414084096957345", "title": "2"}]
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2024, 04:36
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,790

const [list, setList] = useState([])

const changeStatus = (id) => {
    setList(list => {
        const newList = list.slice();

        const index = newList.findIndex(i => i.id === id);
        if (index !== -1) {
            newList[index].title = '#тес2';
        }

        return newList;
    });
}
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2024, 09:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от acvafor
Подскажите, как поменять title по id?
Например вот так...

const [list, setList] = useState([])

const changeStatus = id => {
	setList(old => old.map(o => o.id === id ? {...o, title: "#тес2" : o}))
}
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2024, 19:56
Интересующийся
Отправить личное сообщение для acvafor Посмотреть профиль Найти все сообщения от acvafor
 
Регистрация: 03.08.2024
Сообщений: 13

Сообщение от ksa Посмотреть сообщение
Например вот так...

const [list, setList] = useState([])

const changeStatus = id => {
	setList(old => old.map(o => o.id === id ? {...o, title: "#тес2" : o}))
}
А почему old.map, разве не list.map ?
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2024, 09:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от acvafor
разве не list.map ?
Отнюдь!
Я не записываю "новый стейт"... Я передаю функцию, которая и вернет новый стейт. Она принимает старый стейт и должна вернуть новый.

Применение функции, меняющей стейт, бывает просто необходимо. Пример

const [val, setVal] = useState()
// ...
setVal(val + 1)
setVal(val + 1)
setVal(val + 1)
setVal(val + 1)
// результат тебя удивит ;)

Использование функции решает эту проблему

setVal(old => old + 1)
setVal(old => old + 1)
setVal(old => old + 1)
setVal(old => old + 1)
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2024, 16:44
Интересующийся
Отправить личное сообщение для acvafor Посмотреть профиль Найти все сообщения от acvafor
 
Регистрация: 03.08.2024
Сообщений: 13

Сообщение от ksa Посмотреть сообщение
Отнюдь!
Я не записываю "новый стейт"... Я передаю функцию, которая и вернет новый стейт. Она принимает старый стейт и должна вернуть новый.

Применение функции, меняющей стейт, бывает просто необходимо. Пример

const [val, setVal] = useState()
// ...
setVal(val + 1)
setVal(val + 1)
setVal(val + 1)
setVal(val + 1)
// результат тебя удивит ;)

Использование функции решает эту проблему

setVal(old => old + 1)
setVal(old => old + 1)
setVal(old => old + 1)
setVal(old => old + 1)
Спасибо большое тебе и документации.
"
Here, a => a + 1 is your updater function. It takes the pending state and calculates the next state from it
"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение значений при выборе определенного select samdo Общие вопросы Javascript 4 14.02.2021 18:40
Динамическое изменение значений формы inflexible Events/DOM/Window 2 02.08.2015 22:31
Динамическое изменение значений диаграммы в зависимости от значения ползунков Volchen0ck Events/DOM/Window 8 23.04.2014 13:15
Изменение значений input в форме перед ее отправкой через ajax rustleofstars jQuery 4 26.06.2012 17:40
изменение всех значений src rzphp jQuery 2 02.02.2012 09:59