我编写了一个 React 汉堡菜单,它可以使用常规 JS/JSX 正常运行,但不能使用 TS/TSX。
问题在于我选择的事件类型keydown(作为函数的参数keyboardHandler),显示此错误:
没有重载与此调用匹配。重载 1 of 2, '(type: "keydown",listener: (this: Document, ev: KeyboardEvent) => any, options?: boolean | AddEventListenerOptions | undefined): void',给出以下错误。类型“(e: KeyboardEvent) => void”的参数不可分配给类型“(this: Document, ev: KeyboardEvent) => any”的参数。参数“e”和“ev”的类型不兼容。类型“KeyboardEvent”缺少类型“KeyboardEvent”中的以下属性:区域设置、nativeEvent、isDefaultPrevented、isPropagationStopped、persist
Overload 1 of 2keyboardHandler通过组件安装链接到 的订阅addEventListener,Overload 2 of 2 通过卸载链接到其取消订阅。
import React, { FC, Dispatch, KeyboardEvent, useEffect } from "react";
export interface IBurgerMenu {
toggled: boolean;
navbar: boolean;
setToggled: Dispatch<React.SetStateAction<boolean>>;
}
/* Props from Nav component */
const BurgerMenu: …Run Code Online (Sandbox Code Playgroud) 上下文:react-i18next我正在使用ReactJS 模块制作一个多语言页面。
问题:我无法访问排列的 JSON 内容。
翻译的内容存储在每种语言的单独 JSON 文件中,非数组内容工作正常并正确显示和翻译,但是,我似乎无法在 React 组件上使用数组内容,更不用说通过console.log().
以下是我的文件的示例translationEN.json:
{
"name": "Test",
"occupations":["occupation1",
"Part-time occupation2",
"Language enthusiast"]
}
Run Code Online (Sandbox Code Playgroud)
我可以name使用 来引用非数组i18n.t("name")。但是,尝试访问我的 arrayed occupationsusingi18n.t("occupations")结果会出现在以下 console.log 中:
key 'occupations (en)' returned an object instead of string.
使用JSON.stringify()并不能解决问题,也不能console.log(i18n.t("occupations"), { returnObjects: true })按照i18next 文档中的建议解决问题
提前致谢!