问题标签 [react-tsx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
902 浏览

reactjs - 使用 ESlint 对 React+Typescript 项目进行 Linting

我在一篇文章中读到,TypeScript 核心团队解释 ESLint 的架构比 TSLint 的性能更高。另一方面@typescript-eslint/parser,它制作了一个更方便的 AST,它与@typescript-eslint/eslint-plugin.

现在我感觉我的tslintrc文件没有很好的插件和扩展设置。

  • 遵守 Airbnb 规则好tsx还是只遵守标准规则好?
  • 包含的顺序应该是什么,extends并且plugins它们不会相互覆盖并从中获得最佳的 linting 和自动修复?
  • 使用 CRA 创建的应用程序yarn create react-app myapp --typescript并没有更改任何内容tsconfig.json

这是我的.eslintrc.js

此外,如果有人知道 GitHub/Gist 项目中的一个好的设置,那将会被应用。

0 投票
1 回答
1721 浏览

reactjs - 从 componentDidMount() 调用 Typescript Apollo Query

我有一个 React 组件,它调用一个期望接收对象数组(用于验证数据)的查询。然后我使用它来验证一个 html 表单,该表单又在 apollo Mutation 元素中定义。它在组件方法的 return 语句中的结构render()方式可行,但看起来很麻烦,让我想起了回调地狱时代。我真正想做的是摆脱方法中的<QueryCustomerValidations>元素render()并将其移动到(理想情况下)componentDidMount生命周期事件中。这样验证器就可以在那里加载以供以后在表单中使用,然后离开<MutationCreateCustomer>内部的 render()。

现在,我必须将表单包装在突变中。查询返回的箭头函数内部的突变,以便以正确的顺序接收异步数据。

出于文档目的,这里是创建查询的接口。由于我使用 apollo 客户端从服务器获取了其中的一些数据,因此在这种情况下,一个简单的 graphql 查询解决方案onDidMount()将不起作用。

getCustomerValidations.ts (Interfaces)

customer-validations.query.ts (Client side query types)

正确的解决方案可以是一种从方法中复制并触发<QueryCustomerValidations>元素的componentDidMount()方法,或者如何将元素从方法中取出render()并使用某种“等待”方式调用它,以便可以首先调用它以及之后的突变(并使用查询中的数据)。

谢谢,我知道这不是很容易弄清楚。

0 投票
1 回答
565 浏览

typescript - Prettier 不解析 Typescript 类型转换

我正在使用 Prettier 1.17.1 和 TypeScript 3.4.5 和create-react-app

每次尝试使用x as TTypeScript 中的语法进行类型转换时,我都会收到以下错误:

我也尝试了不同的语法<T> x,但由于 JSX 格式,它破坏了 TS 编译。

0 投票
0 回答
346 浏览

reactjs - 在 React ComponenetDidUpdate() 生命周期方法在渲染道具模式中被多次调用

我正在尝试使用渲染道具模式来获得更好的代码可重用性,为此我正在关注渲染道具组件(R),它包含生命周期方法以及来自 FC(F)的 clickHandler,它进行一些处理并更新 redux 存储。我在 (A) 组件内使用渲染组件 (R) 使用不同的道具 3 次。一旦我从 FC 使用 clickHandler,它就会调用来自渲染道具组件(R)的方法并更新商店,但渲染道具组件(R)中的 componentDidUpdate() 方法也会被调用 3 次,这不应该发生,它应该只被调用一次。无法知道并获取哪个 clickHandler 更新了商店。

渲染道具组件(R)中的 ComponentDidUpdate 和 handleUpload

组件(A)中使用的渲染道具功能(UploadRender)

请帮助我了解 componentDidUpdate 被多次调用以及如何知道哪个 clickHandler 被调用。

0 投票
1 回答
66 浏览

reactjs - TypeScript 不会选择正确的覆盖

我刚刚创建了一个动态组件,应该如下所示:

/* 应该继承所有 InputComponent 属性。DefaultComponent 应该是默认的组件道具值。*/

我当前的实现如下所示:

所以我希望接下来会发生:

1.)当组件未定义时,我希望第一次覆盖(默认的那个)

2.) 定义组件时,我希望继承它的属性

由于某种原因,第二种情况永远不会发生,它总是选择第一种。有没有办法更严格,所以我可以强迫第二种情况成为可能?

更新

示例:https ://codesandbox.io/s/quiet-architecture-zx60y

0 投票
1 回答
1163 浏览

reactjs - react-autosuggest 与 debounce 和 distinctUntilChanged

意图:

我正在尝试实现一个理想的搜索字段,直到:

  1. 已达到350ms的去抖时间
  2. AND 直到输入字段的值发生变化。

到目前为止我已经尝试过:

我使用主题来跟踪输入字段中的更改。每次输入字段发生变化handleSuggestionsFetchRequested并被调用时,我都会将一个新值向下推到SubjectusingsearchString$.next(userInput);

useEffect钩子中,我正在pipe使用searchString$withdebounceTime(350)distinctUntilChanged()。像这样的东西:

但是每次用户输入发生变化时,API 调用仍然会进行。

问题:

我认为问题在于每次输入字段的值发生变化时,我也在设置状态:

这导致组件重新渲染并调用 useEffect,最终导致一次又一次地调用 API。

我可能是错的。

如何复制:

我创建了一个复制问题的示例代码沙箱。

提前非常感谢。

0 投票
1 回答
1507 浏览

reactjs - TSX:嵌套递归对象数组接口

我无法让我的打字稿界面与 react tsx 组件一起使用。我已经将所有项目都包含在一个包含可能子项目的对象数组中。

我尝试了很多不同的界面,但总是以某种错误告终,目前只有地图功能似乎不适用于界面。(我是菜鸟,昨天第一次开始使用打字稿:P)

在此处输入图像描述

我的目标是没有错误和工作组件。我感谢所有的帮助!

0 投票
1 回答
349 浏览

typescript - React-Redux Reducer 没有被调用

我已经设置了我的状态、动作、reducers、类型(使用 TypeScript),以及对这些动作的一些调用。该操作调用了适当的函数(我不确定它们是否真正返回数据),但此状态切片的减速器并非每次都被调用。

我已经阅读了 React-Redux 文档,查看了 Stack Overflow 问题,并询问了一位同事。我发现没有任何帮助。

页面.tsx

/store/cards/types.ts

/store/cards/actions.ts

/api/cardsApi.ts

/store/cards/reducers.ts

/store/index.ts

预期结果:更新状态以包含从 API 中提取的卡片。

编辑:我刚刚发现我的操作和类型已加载到页面源中,但减速器没有。关于可能导致这种情况的任何想法?

0 投票
1 回答
231 浏览

javascript - 兑换使用带有回调函数的 Hooks

我正在尝试转换Class ComponentStateless Functional Component使用React Hooks概念

我正在使用react-jsonschema-form-Custom field components 参考链接

我正在像这样转换上面的代码。

我认为它会引发错误,我需要使用 React.useEffect(),但不知道如何实现它。请任何反应专家支持。

index.js:1375 警告:来自 useState() 和 useReducer() Hooks 的状态更新不支持第二个回调参数。要在渲染后执行副作用,请在组件主体中使用 useEffect() 声明它。

0 投票
1 回答
822 浏览

typescript - 属性 'handleLoginDisplay' 不存在于类型'Readonly<{}> & Readonly<{ children?: ReactNode; }>

我在 Typescript 中有以下代码。为什么编译器会抛出错误?

属性 'handleLoginDisplay' 不存在于类型'Readonly<{}> & Readonly<{ children?: ReactNode; }>'.ts(2339)