技术:反应,打字稿
我正在尝试在redux中编写一个异步操作创建程序,该异步操作创建程序从服务器获取数据,但是我正在返回的内部函数的范围发生了变化,并且一无所知
actions / Movie.ts
import MovieServer from '../../server/Movie';
import { setMovies } from './movieActions';
const fetchMovies = () => {
console.log(MovieServer);
return async (dispatch: any) => {
console.log(MovieServer);
const movies: Movie[] = await MovieServer.fetchMovies();
dispatch(setMovies(movies));
}
}
server / Movie.ts
import Movie from "../models/movie";
import { serverURL } from "./config";
const fetchMovies = async (): Promise<Movie[]> => {
let movies: Movie[] = [];
try {
const response = await fetch(serverURL + "/api/movie", {
method: "GET"
});
if (!response.ok || response.status !== 200) {
throw new Error("bad response");
} else {
movies = await response.json();
}
} catch (err) {}
return movies;
}
export default { fetchMovies };
运行代码时,第一个日志输出是MovieServer
的函数声明,第二个日志输出是undefined
。
所以在内部函数内部有些不好,并且会引发错误。
我尝试将内部函数包装在.bind(this)
中,但是会引发ts编译错误:The containing arrow function captures the global value of 'this'.
答案 0 :(得分:1)
谢谢您的回答,但这是服务器的问题,我不知道为什么它影响了功能的范围,但是我解决了