Тема: Ract 17+TypeScript
Показать сообщение отдельно
  #1 (permalink)  
Старый 03.11.2021, 10:11
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

Ract 17+TypeScript
Доброе время суток
какая-то чертовщина, заблудился в 3 соснах.
todo.a увеличивается не на 1, а на два. Данный кусок кода срабатывает два раза.
toggleHander исходя и логов срабатывает один раз, в newTodo перед return нужный результат
но уже в useEffect (который также срабатывает один раз исходя из логов) результат двойной

Код:
export interface ITodo{
  title:string,
  id:number,
  completed:boolean,
  a:number
}
.................
  const [todos, setTodos]=useState<ITodo[]>([])
  useEffect(()=>{
    console.log(todos)
  },[todos])
  const toggleHander=(id:number)=>{
    setTodos(prev=>{
      const newTodo:ITodo[]=prev.map(todo=>{
        if(todo.id === id){ 
          console.log('+')
          todo.completed = !todo.completed
          todo.a=todo.a+1
          // todo.completed=false
        }else{console.log('-')}
        // console.log(todo)
        return todo
      })
      newTodo.forEach(e=>console.log(e))
      return newTodo
    })
  }
  const
Ответить с цитированием