在另一个函数之前强制 setState
Posted
技术标签:
【中文标题】在另一个函数之前强制 setState【英文标题】:Force setState before another function 【发布时间】:2021-10-08 19:52:32 【问题描述】:如何在调用fetchSearchedMovie(searchedMovie)
函数之前强制完成setSearchedMovie
?
const updateMovies, searchedMovie, setSearchedMovie = useContext(MoviesContext);
const fetchMoviesList = (event: any) =>
const searchedMovieValue = event.target.value;
setSearchedMovie(searchedMovieValue);
if (searchedMovie)
fetchSearchedMovie(searchedMovie)
.then((res) => updateMovies(res))
.catch(() => updateMovies([]));
else
fetchMovies()
.then((res) => updateMovies(res))
.catch(() => updateMovies([]));
【问题讨论】:
【参考方案1】:使用useEffect
钩子:
const updateMovies, searchedMovie, setSearchedMovie = useContext(MoviesContext);
const fetchMoviesList = (event: any) =>
const searchedMovieValue = event.target.value;
setSearchedMovie(searchedMovieValue);
useEffect(()=>
if (searchedMovie)
fetchSearchedMovie(searchedMovie)
.then((res) => updateMovies(res))
.catch(() => updateMovies([]));
else
fetchMovies()
.then((res) => updateMovies(res))
.catch(() => updateMovies([]));
, [searchedMovie, fetchSearchedMovie, fetchMovies, updateMovies]);
如果您希望每次通过 setSearchMovie
更改 searchedMovie 时都运行此功能,您甚至可以将此挂钩集成到 MoviesContextProvider
(我假设您使用 useState
进行这些操作)
【讨论】:
这行得通,谢谢!我认为我应该使用 useEffect() 虽然我没有得到组件的哪个部分来做它以上是关于在另一个函数之前强制 setState的主要内容,如果未能解决你的问题,请参考以下文章
在另一个成员函数中调用成员函数时,在“int”之前的预期主表达式
在一个控制器上强制执行 https,在另一个控制器上强制执行 http