Проблема с настройкой состояния с использованием объекта с помощью TypeScript

#typescript #react-native #react-hooks #setstate

#typescript #react-native #реагирующие перехваты #setstate

Вопрос:

У меня возникли проблемы с setState объектов. Мое определение интерфейса выглядит следующим образом;

 export interface IProjectData {
  Id?: string,
  Description?: string,
  ProjectState?: string,
}
 

Я получаю доступ к параметру, который я отправил с помощью RootStackParamList, следующим образом.

 function ProjectScreen({ route, navigation }: ProjectProps) {
  const [project, setProject] = useState<IProjeData>(null)

  useEffect(() => {
    const sProject = JSON.stringify(route.params.project)
    let myProject: IProjeData = JSON.parse(sProject)
    console.log('myProject: ')
    console.log(myProject)
    setProject(myProject)
    console.log('Project: ')
    console.log(project)
  }, [])

  return (
    ...
    ...
  )}
 

Вывод консоли выглядит следующим образом. Где я ошибаюсь? Почему я не могу присвоить значение project?

 myProject: 
{Id: "bd7acbea", Description"My Test Project", ProjectState"25/25"}
Project: 
null
 

Ответ №1:

setProject это асинхронный метод, и вы не можете получить обновленное project значение сразу после setProject этого.

Вы должны использовать useEffect с добавлением project зависимости, чтобы получить обновленное project значение.

 useEffect(() => {
  console.log(project)
}, [ project ])