【发布时间】:2022-11-15 07:44:23
【问题描述】:
targetMovie 在涉及到 rednering 时为 null。我找不到任何解决方案。第一次遇到无法解决的问题。请帮忙!
async function getMovie(id) {
try {
const res = await axios.get(apiEndPoint + "/" + id);
const movies = await res.data;
return movies;
} catch (err) {
console.log(err);
}
}
const MovieEdit = () => {
const { id } = useParams();
const [targetMovie, setTargetMovie] = useState(null);
useEffect(() => {
getMovie(id)
.then((mov) => {
setTargetMovie(mov);
console.log(mov);
})
.catch((err) => console.log(err));
}, []);
console.log(targetMovie);
if (targetMovie) return <AddMovie movie={targetMovie} />;
return <Navigate to="/not-found" />;
};
【问题讨论】:
-
目前尚不清楚问题出在哪里。你能否请edit你的问题来描述你期望看到的与你实际看到的。您的日志记录显示您的期望吗?
-
我感觉很清楚。 OP 认为
<AddMovie>正在以空targetMovie呈现。 -
@KonradLinkowski 我看不出它在这里是如何应用的
-
啊,你正在使用来自 react-router 的
<Navigate>。我认为您应该阅读该组件的文档 ~ reactrouter.com/en/main/components/navigate
标签: reactjs asynchronous react-router react-state