当前位置: 首页 > 知识库问答 >
问题:

USState与界面反应的本地打字稿

厉钊
2023-03-14

有一种方法可以将useState与接口类型一起使用吗?

这就是我想做的:

const [movie, setMovie] = useState(null);

[...]

.then((responseJson) => {
            var movie: Movie = {
                id : id,
                title: responseJson.original_title,
                backdrop: "https://image.tmdb.org/t/p/original" + responseJson.backdrop_path,
                note: responseJson.vote_average,
                numberNote: responseJson.vote_count,
                year: responseJson.release_date,
                runtime: responseJson.runtime,
                genre: responseJson.genres,
                plot: responseJson.overview,
            };
            setMovie(movie);
        })

但是在类型上有错误。

我的界面:

interface Movie {
    id: number;
    title: string;
    backdrop: string;
    note: number;
    numberNote: number,
    year: number,
    runtime: number,
    genre: {id: number, name: string}[],
    plot: string
}

根据这篇文章:用TypeScript在useState React Hook上设置类型。

我可以尝试这样做:

const [movie, setMovie] = useState<Movie>({id: 0,
        title: "",
        backdrop: "",
        note: 0,
        numberNote: 0,
        year: 0,
        runtime: 0,
        genre: [{id: 0, name: ""}],
        plot: ""});

但它看起来不干净,我不认为这是将随机值置于第一状态的好方法。

共有1个答案

龚俭
2023-03-14

您可以通过以下方式暗示状态类型:

const [movie, setMovie] = useState<Movie|null>(null);
 类似资料:
  • 问题内容: 我目前的理解非常模糊,我倾向于认为map是同步的,而flatMap是异步的,但是我真的无法解决它。 这是一个例子: 我有文件(a ),我想将其复制到服务器上的某些文件中。 本示例摘自一本书。 我可以将所有更改为to ,反之亦然,一切仍然正常。我不知道有什么区别。 问题答案: 用于同步,非阻塞,一对一转换 用于异步(非阻塞)1-to-N转换 区别在方法签名中可见: 取a 并返回a 取a

  • 我正在构建一个基本的应用程序,我想从Laravel Echo实时获取事件数据。我正在使用stack.io.一切正常工作与laravel redis和一切运行和工作没有问题。但是,我没有从反应本机获得事件的控制台日志,也没有警告或错误。这是我的密码 反应原生App.js Laravle根,laravel echo服务器。json: 新闻消息事件: .环境: 我正在使用laravel tinker简单

  • 问题内容: 我正在读取一个JSON文件,其中包含某些人的名称和图像URI。在遍历结构时,我可以打印名称,但无法显示图像。我也看到了那个阵营不支持动态图像,所以我做了一个解决办法的建议在这里。 JSON格式 主要成分 问题答案: 根据您期望的图像数量,您可以尝试将文件放置在文件夹中,如下所示: 然后在您的中,如果您要剪裁 资产:/中的 部分字符串,则可以使用: 如果要处理大量图像,则文件将变得难以维

  • 你好,我是新的反应原生,我试图安装反应原生sqlite存储改变安装,我按照Android安装的所有指令:[https://www.npmjs.com/package/react-native-sqlite-storage][1] 我尝试使用命令:react native run android运行它,但每次我都会遇到错误: 失败:生成失败,出现异常。错误:无法确定任务“:app:mergeDebu

  • 问题内容: 我不明白为什么找不到它。 导入组件文件。 是什么赋予了? 问题答案: 如果您不使用打字稿2.1,则应升级到它。似乎您使用的是@types中的2.x版本。 这是我现在正在使用的工作文件: 自从我解决了您遇到的同样问题以来已经过了几天,但我认为这里的关键是and 。

  • 问题内容: 我很好奇为什么只在var上打印内存地址就可以直接使用,但是尝试通过接口执行相同的操作却不能打印出内存地址? https://play.golang.org/p/Ko8sEVfehv 只是想在修复错误后添加它,它现在可以正常运行。测试移位内存指针 https://play.golang.org/p/BnB14-yX8B 问题答案: 因为在方法第二种情况下: 不是一个而是一个结构,是类型的