Сергей
в асинхронности...может тут влияет кто из них раньше выполняется..сет стей или колбэк в сет стейте..
Andrew
Andrew
но где теряется ивент при прямой передаче?
Felix
Он в консоле выводит event.target.value,да?
Andrew
да
Andrew
Но но потом в сет стейте его уже нет
Andrew
если напрямую
Felix
this.setState((event)=>{
return {
name : event.target.value
}
}
Felix
Может так сработат
Andrew
Felix
Без укорачивания синтаксиса
Andrew
синтакси пробовал и полный, тут не в эьлм дело
Andrew
и в примере
Felix
Пропиши без стрелочной функции
Andrew
в сетСтейт в коллбек параметр event получит превстейт,а не ивент
Felix
Ля,точно))
Сам сказал про prevState,а теперь чет заливаю
Andrew
Andrew
тут в другом дело
Andrew
то ли сетстейт ивенты чистит
Andrew
ведь в параметры мы передаем ивент - обьект
Andrew
соответственно не копируем обьект
Andrew
а передаем сылку на него
Andrew
и что-то setState с ивентами делает
Andrew
соответственно при удалении оригинала обьекта
Andrew
в параметре была не копия ,а ссылка
Andrew
и она тогда тоже становится равной ничему
Andrew
но это лишь
Andrew
мои предположения
Сергей
Может из за того что ты первым запускаеш сетСтейт который сетает функцию которая ещё не выполнилась..
Andrew
какую функцию?
Сергей
Стрелочную..
Felix
?
Andrew
вы о callback в setstate?
Сергей
Угу
Andrew
дык а как она может не выполниться,если ошибка выдает,что "Cannot read property 'value' of null" ,это значит ,что функция отработала свое и вернула уже обьект ,раз set state ег уже читает
Felix
А зачем тебе функция?))
Felix
Если значение таргета нужно
Felix
Юзай обычный формат
Felix
Ради интереса,попробуй создать функцию для тега селект(как обработчик события) и в нем вызови onchange() и передай туда event
Andrew
пробовал ранее
Andrew
все нормально
Andrew
ивент так же приходит
Andrew
и теряется он на уровне setstate
Felix
А без callback он работает?
Andrew
ибо потом на этом же споткнешься
Andrew
Сергей
Тут ещё стоит вопрос от чьего имени вызывается колбэк функция в такой цепочке..может в контексте где то идёт потеря евента
Сергей
И поэтому внутри объекта он уже андефайнед.
Сергей
Хз...уже идеи странные пошли..
Felix
В общем,когда используешь callback,то перед setState используй e.persist()
Felix
Поясню,все дело в том,что при использовании callback,данная функция откладывается и считается за асинхронной,а реакт же удаляет event(syntacticEvent),поэтому она в дальнейшем не может найти значение.Вот стандартный вариант обновления работает,потому что в качестве аргумента обычный объект,в котором все значения сразу фиксируются.
Felix
Надеюсь помог разобраться
Anonymous
Anonymous
Нужна помощь
Anonymous
Нужна помощь
зачем тебе на 21 строке еще стрелка и скобки круглые
Anonymous
Модельный окно
Anonymous
Чтобы вызывать его
Anonymous
сделай полный скрин , ну или фотку что б я понял зачем это
Anonymous
Ок
Anonymous
Anonymous
Anonymous
Anonymous
Anonymous
на 58 , onClick = { () => {handleClick( { vertical: "bottom," horizontal: " center "} )}}
Anonymous
добавить нужно было скобки круглые и стрелку
Anonymous
но это не изза этого не работает , просто еще одна ошибка
Anonymous
Попробую
Anonymous
Anonymous
Ошибка не пропало
Anonymous
Anonymous
да мы другую сейчас зафиксили
Anonymous
Anonymous
Anonymous
Anonymous
в скобки возьми newState
Anonymous
Скобку беру все код удаляет скобку
Anonymous
аа чё за ошибка в браузере
Anonymous
Anonymous
кажется он ругается потому что такая функция уже гдето есть