【发布时间】:2021-09-26 19:01:07
【问题描述】:
我正在尝试使用 React Context 传递状态的 setter 函数。但是,我收到一个 Typescript 错误“类型‘null’不可分配给类型‘(值:数字)=> void’。”当我尝试为其分配默认值时。
我该如何解决?非常感谢
context.tsx
import React from "react";
import { Movie } from "./movies.service";
export const MoviesContext = React.createContext<{
movies: Movie[];
selectedMovie: number;
setSelectedMovie: (value: number) => void;
}>({
movies: [],
selectedMovie: 0,
setSelectedMovie: null, // ERROR IS SHOWN HERE
});
App.tsx
import React, { useState, useEffect } from "react";
import './App.css';
import HomePage from './components/Pages/HomePage';
import { Movie, fetchMovies } from "./services/movies.service";
import { MoviesContext } from "./services/context";
import MoviePage from './components/Pages/MoviePage';
const Router = require("react-router-dom").BrowserRouter;
const Route = require("react-router-dom").Route;
const Switch = require("react-router-dom").Switch;
function App() {
useEffect(() => {
fetchMovies()
.then(setMovies)
.catch(() => setMovies([]));
}, []);
const [movies, setMovies] = useState<Movie[]>([]);
const [selectedMovie, setSelectedMovie] = useState(0);
return (
<MoviesContext.Provider value={{ movies, selectedMovie, setSelectedMovie }}>
<div className="App">
<div className="container typography-base">
<Router>
<Switch>
<Route path="/movie/:movieid" >
<MoviePage />
</Route>
</Switch>
</Router>
</div>
</div>
</MoviesContext.Provider>
);
}
export default App;
【问题讨论】:
标签: javascript reactjs typescript react-router react-context