问题标签 [react-hooks]

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 投票
3 回答
18700 浏览

javascript - Invariant Violation:Hooks 只能在函数组件的主体内部调用

TL;DR:我正在尝试使用新的react-hooksapi,但在调用钩子时我不断收到 Invariant Violation 错误setState,但它一直失败。

0 投票
6 回答
15136 浏览

javascript - 在 React useEffect 挂钩中引用过时的状态

我想将状态保存到localStorage卸载组件时。这曾经在componentWillUnmount.

我尝试对useEffect钩子做同样的事情,但似乎状态在useEffect.

这是为什么?如何在不使用类的情况下保存状态?

这是一个虚拟示例。当您按下关闭时,结果始终为 0。

代码沙盒

0 投票
2 回答
2212 浏览

reactjs - 错误:只能在函数组件的主体内部调用挂钩

大家好,我正在尝试在我的应用程序中使用钩子,但它一直说未处理的拒绝(不变违规):只能在函数组件的主体内调用钩子。我猜我的一个库与钩子冲突,因为我找不到代码有任何问题。

这是我的 package.json,我正在迁移从 recompose 到 hooks 的所有内容......我尝试在测试项目中使用带有 nex.js 的 hooks,它在那里工作正常......

这是我的代码:

0 投票
1 回答
936 浏览

reactjs - 在表单输入中使用 React Hooks 设置模型状态

如何使用setState()React Hooks 中的内置函数来更改模型的状态以进行表单输入?

例如如何setFirstName()onChange输入字段中绑定?

0 投票
5 回答
161657 浏览

reactjs - 使用 TypeScript 在 useState React Hook 上设置类型

我正在迁移一个带有 TypeScript 的 React 项目以使用钩子功能(React v16.7.0-alpha),但我无法弄清楚如何设置解构元素的类型。

这是一个例子:

我想强制user变量为 type IUser。我唯一成功的试验是分两个阶段进行:键入,然后初始化:

但我确信有更好的方法。此外,setUser应该将其初始化为一个以 aIUser作为输入且不返回任何内容的函数。

另外,值得注意的是,在const [user, setUser] = useState({name: 'Jon'});没有任何初始化的情况下使用也可以,但我想利用 TypeScript 来强制对 init 进行类型检查,尤其是在它依赖于某些道具的情况下。

谢谢你的帮助。

0 投票
1 回答
1717 浏览

javascript - React hooks:使用 useEffect 时未获取状态更新

我在混合useStateuseEffect钩子时遇到问题。我似乎无法queryonReady().

谁能看到我做错了什么或解释为什么这不起作用?

0 投票
6 回答
235751 浏览

javascript - 我可以在 useEffect 挂钩中设置状态吗

假设我有一些依赖于其他状态的状态(例如,当 A 更改时,我希望 B 更改)。

创建一个观察 A 并在 useEffect 钩子内设置 B 的钩子是否合适?

效果是否会级联,当我单击按钮时,第一个效果会触发,导致 b 发生变化,导致第二个效果在下一次渲染之前触发?像这样构建代码是否有任何性能劣势?

0 投票
4 回答
8821 浏览

javascript - React Hooks - 引擎盖下发生了什么?

我一直在尝试 React Hooks,它们似乎确实简化了诸如存储状态之类的事情。然而,他们似乎通过魔法做了很多事情,我找不到一篇关于他们实际工作的好文章。

看起来很神奇的第一件事是,每次调用它返回的 setXXX 方法时,调用 useState() 之类的函数如何导致重新渲染功能组件?

当功能组件甚至无法在 Mount/Unmount 上运行代码时,useEffect() 之类的东西是如何伪造 componentDidMount 的?

useContext() 如何实际访问上下文,它甚至如何知道哪个组件正在调用它?

这甚至还没有开始涵盖所有已经出现的第 3 方挂钩,例如 useDataLoader,它允许您使用以下内容......

当组件发生变化时,数据、错误、加载和重试如何重新渲染您的组件?

抱歉,有很多问题,但我想其中大部分都可以归结为一个问题,即:

钩子后面的函数如何真正访问调用它的功能/无状态组件,以便它可以记住重新渲染之间的内容并使用新数据启动重新渲染?

0 投票
1 回答
3940 浏览

javascript - useState 挂钩不能与 usePrevious 挂钩

我创建了一个菜单组件,并尝试使用 useState 挂钩来存储打开的子菜单。当菜单关闭时(使用道具从父级关闭),我想关闭所有子菜单,为此我使用 react-hanger 库中的 usePrevious 挂钩来确定主菜单何时从 OPEN > CLOSED 开始。这是我的代码。

问题是这会导致无限循环错误并不断重新渲染菜单。

这似乎是因为他在每次重新渲染时 if 语句 if TRUE 因为调用 setSubMenusOpen 似乎不会导致 usePrevious 再次存储新值。这就是我认为正在发生的事情。

  • props.isOpen 从 TRUE > FALSE 变化
  • prevIsOpen 和 props.isOpen 在这一点上是 TRUE 和 FALSE,所以......
  • 调用 setSubMenusOpen() 会导致重新渲染。
  • previsOpen 和 props.isOpen 现在不是 FALSE 和 FALSE,而是保持不变,所以 setSubMenusOpen 会再次被调用,无穷无尽

任何帮助将不胜感激。

0 投票
1 回答
5816 浏览

javascript - 如何使用 React Hooks 获取 Antd Form 的值?

下面是antd-mobile的TextareaItem
示例, 我想用 React Hooks 重写它,
这是我的半成品代码:

问题:
1、如何TextareaItem使用 React Hooks 获取值?我将在获取这些值后发送 ajax 请求。有一个自定义钩子react-use-form-state,但它作用于 html 表单,如何做同样的事情在 Antd Form 上?

2、如何修改 this.autoFocusInst.focus();函数组件中的句子?