#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 ])