小编Tyl*_*ler的帖子

TypeScript:隐式键入“any”,因为没有类型注释并且在其自己的初始值设定项中直接或间接引用

使用以下代码片段我收到以下错误: TypeScript error: 'route' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer. TS7022

const store = configureStore()

const renderWithRouter = (
  ui: any,
  {
    route = '/', /* ERROR HERE */
    history = createMemoryHistory({ initialEntries: [route] }),
  } = {},
) => {
  return {
    ...render(
      <Provider store={store}>
        <Router history={history}>{ui}</Router>
      </Provider>,
    ),
    history,
  }
}

export default renderWithRouter
Run Code Online (Sandbox Code Playgroud)

我正在处理代码的完整部分,并且必须升级一个包,然后突然开始抱怨。(包是react-router-dom@types/react-router-dom)。

我不太确定如何克服这个问题,而且我对函数中第二个参数的情况有点困惑。看起来他们试图识别默认的空参数,但是他们已经在左侧填写了route和 …

typescript reactjs

7
推荐指数
0
解决办法
1万
查看次数

使用 Typescript 和 React 中的 Abort Signal 删除事件处理程序

我正在构建一个门户,最终获取类似 xml 的文档并将其显示在浏览器中,每当我加载这些页面之一时,我都需要将 onclick 和 mouseover 处理程序附加到页面上的多个元素。

但是,用户可以在其中几个页面之间导航,并且我遇到了将多个处理程序附加到单个元素的问题。

因此,我想附加一个包含中止信号的处理程序,这样每当我更改页面时,我就可以暗示中止并立即删除所有处理程序,但我似乎无法让打字稿一起运行。

代码示例:

    export const attachElementModifiers = (
      elementObject: { [key: string]: Element },
      elementPointerClass: string,
      listener: (evt: any) => void,
      onHoveringHandler: (_evt: any, key: string) => void,
      onMouseOutHandler: (_evt: any) => void,
      controller: AbortController
    ): void => {
      for (const [key] of Object.entries(elementObject)) {
        elementObject[key].classList.add(elementPointerClass)
        elementObject[key].addEventListener('click', listener)
        elementObject[key].addEventListener('mouseover', (_evt: any) =>
          onHoveringHandler(_evt, key)
        )
        elementObject[key].addEventListener(
          'mouseleave',
          (_evt: any) => onMouseOutHandler(_evt),
          { signal: controller.signal }  // <---- ERROR HERE
        )
      }
    }
Run Code Online (Sandbox Code Playgroud)

总是出现以下错误: …

events typescript reactjs

6
推荐指数
1
解决办法
1959
查看次数

在哪里可以找到用于语法突出显示的tm主题的所有可能键的列表?

在我当前文本编辑器主题的tmTheme文件中有许多选项,包括下面代码中的选项.是否有一个名单的地方,它定义了可以包括在此列表中的所有可能的标签(例如background,inactiveSelection,findHighlight等)?

<dict>

<key>background</key>
<string>#1a1a1a</string>

<key>caret</key>
<string>#B6ECF9AF</string>

<key>foreground</key>
<string>#ecf0f1</string>

<key>invisibles</key>
<string>#F3FFB51A</string>

<key>lineHighlight</key>
<string>#2a2a2a</string>

<key>selection</key>
<string>#e74c3c55</string>

<key>selectionForeground</key>
<string>#ffffff</string>

<key>findHighlight</key>
<string>#e74c3c</string>

<key>inactiveSelection</key>
<string>#e74c3c77</string>

<key>gutter</key>
<string>#2a2a2a</string>

<key>gutterForeground</key>
<string>#ffffff</string>

<key>guide</key>
<string>#222222</string>

<key>activeGuide</key>
<string>#ffffff</string>

</dict>
Run Code Online (Sandbox Code Playgroud)

另一个带有更多标签的例子:其他主题

如果相关,我正在使用VSCode.

themes syntax-highlighting visual-studio-code tmlanguage vscode-extensions

4
推荐指数
1
解决办法
2010
查看次数

延迟 Cypress 中的拦截响应

我正在编写 cypress 测试,我想测试我们程序的一个功能,该功能将在数据开始出现时显示数据。这可能是一个包含数百个元素的列表,为了加快速度,我们将请求分解为多个请求。

第一个请求将获取前 50 个项目,第二个请求将获取接下来的 100 个项目,依此类推。

我想确保第一个请求返回后,列表包含 50 个项目,第二个请求返回后,列表包含 150 个项目。

我不知道该怎么做,可靠地延迟拦截响应,以便我可以返回前 50 个,检查列表长度,然后允许更多数据进入。

这是我到目前为止所拥有的:

const baseUrl = 'https://example.io/listData*'
const document = 'public_document_10101'

cy.intercept(
  {
    url: baseUrl,
    query: {
      limit: '50',
      'document': document
    },
  },
  { fixture: 'first-response.js' }
).as('firstResponse')

cy.intercept(
  {
    url: baseUrl,
    query: {
      limit: '100',
      skip: '50',
      'document': document
    },
  },
  { fixture: 'second-response.js' }
).as('secondResponse')
Run Code Online (Sandbox Code Playgroud)

我不相信类似的事情cy.wait('@firstResponse')会做我想做的事,因为这根本不会阻止第二个返回。我愿意使用某种延迟,但是如果能等到我这么说之前完全阻止它,那就太好了。

reactjs cypress

3
推荐指数
1
解决办法
8027
查看次数

将条件样式应用于 React 中的组件 - 内联 CSS

我正在尝试根据某些按钮是否“活动”以及是否将鼠标悬停在它们上来设置它们的样式。

它在某种程度上有效,但是,它的行为方式我并不完全理解。

如何根据组件的状态以及用户行为将条件样式应用于组件?

我在这个沙盒中有一个例子

主 JS 文件复制到这里:

demo.js

import React from "react";
import PropTypes from "prop-types";
//import { makeStyles } from "@material-ui/core/styles";
import { withStyles } from "@material-ui/styles";
import { Button } from "@material-ui/core";

const useStyles = theme => ({
  root: {
    backgroundColor: theme.palette.secondary.paper,
    width: 500
  },
  pageButton: {
    backgroundColor: "black",
    color: "blue",
    width: 30,
    minWidth: 20,
    "&:hover": {
      backgroundColor: "green"
    }
  },
  normalButton: {
    width: 30,
    minWidth: 20,
    backgroundColour: "red"
  }
});

class Feature extends React.Component {
  constructor(props) …
Run Code Online (Sandbox Code Playgroud)

javascript css reactjs material-ui

2
推荐指数
1
解决办法
6282
查看次数

Mantine UI - 将 useMantineColorScheme 与 NextJS 一起使用 - ColorSchemeProvider 丢失

我有一个 NextJS 应用程序,我想使用 Mantine 作为 UI 库,但是我遇到了设置问题。

我基本上完全遵循了标准设置说明,但是出现以下错误:

Error: useMantineColorScheme hook was called outside of context, make sure your app is wrapped with ColorSchemeProvider component

我希望渲染的组件如下所示(从此处获取)

我的 mantine 提供器是否放置在错误的位置?

我创建了一个正在运行的副本,它以同样的方式失败在这里

我的代码:

_document.tsx

import { createGetInitialProps } from '@mantine/next'
import Document, { Head, Html, Main, NextScript } from 'next/document'

const getInitialProps = createGetInitialProps()

export default class _Document extends Document {
  static getInitialProps = getInitialProps

  render() {
    return (
      <Html>
        <Head />
        <body>
          <Main />
          <NextScript …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js mantine

1
推荐指数
1
解决办法
4806
查看次数