react-hooks相关内容

React 挂钩 useEffect 仅在更新时?

如果我们想限制useEffect只在组件挂载时运行,我们可以在[]中添加useEffect的第二个参数. useEffect(() => {//...}, []); 但是我们怎样才能让useEffect只在组件更新的那一刻运行,除了初始挂载之外? 解决方案 如果您希望 useEffect 仅在除初始安装之外的更新上运行,您可以使用 useRef 来跟踪 initialMountuseE ..
发布时间:2021-07-03 19:15:24 其他开发

我应该在组件中使用一个还是多个 useEffect?

我有一些副作用要应用,想知道如何组织它们: 作为单次使用效果 或几个 useEffects 在性能和架构方面哪个更好? 解决方案 你需要遵循的模式取决于你的用例. 首先,您可能会遇到一种情况,您需要在初始挂载期间添加事件侦听器并在卸载时清理它们,另一种情况是需要清理并重新添加特定侦听器道具变化.在这种情况下,使用两个不同的 useEffect 可以更好地将相关逻辑保持在 ..
发布时间:2021-07-03 19:15:21 其他开发

React Hooks - 修改后的状态不会立即反映

我正在尝试使用 React 钩子将类重构为无状态组件. 组件本身非常简单,我看不出我哪里出错了,因为它几乎是从 react 文档中复制粘贴过来的. 当用户单击按钮时,组件会显示一个弹出窗口(按钮通过道具传递给我的组件).我正在使用 typescript. 我评论了在 hooks 版本中没有做我想做的事情 这是我原来的课程: export interface NodeMen ..
发布时间:2021-07-03 19:15:18 其他开发

停止 useEffect 在挂载上运行

我只希望useEffect在我的依赖列表改变时运行,它也在每次挂载组件时运行,有什么办法不挂载时触发吗? 如果某些值,你可以告诉 React 跳过应用效果在重新渲染之间没有改变. 我最初认为这意味着它不应该在后续装载时重新渲染,但 这个问题澄清了这一点. 我在主“页面"(react-router)中显示记录列表,用户可以选择单个记录并转到详细信息页面,然后返回到主页面 - 所以主 ..
发布时间:2021-07-03 19:15:15 其他开发

反应钩子渲染额外的时间

我的代码导致了意外数量的重新渲染. function App() {const [isOn, setIsOn] = useState(false)const [定时器,setTimer] = useState(0)console.log('重新渲染', 计时器)useEffect(() => {让间隔如果(isOn){间隔 = setInterval(() => setTimer(timer + ..
发布时间:2021-07-03 19:15:12 其他开发

为什么需要具有功能更新表单的 React useState?

我正在阅读有关功能更新的React Hook 文档,请参阅这句话: “+"和“-"按钮使用功能形式,因为更新值基于之前的值 但我看不出需要功能更新的目的是什么,它们与直接使用旧状态计算新状态有什么区别. 为什么 React useState Hook 的 updater 函数需要函数式更新表单? 有哪些例子我们可以清楚地看到差异(所以使用直接更新会导致错误)? 例如,如果我 ..
发布时间:2021-07-03 19:15:09 其他开发

React Hooks - 如何实现 shouldComponentUpdate?

我知道你可以通过传递一个数组作为可选的第二个参数来告诉 React 跳过一个效果. 例如: useEffect(() => {document.title = `您点击了 ${count} 次`;}, [数数]);//只有在计数改变时才重新运行效果 但是如果我想控制比较怎么办?添加我自己的比较逻辑. 我希望像 React.memo 这样的东西可以将函数作为第二个参数传递. 解 ..
发布时间:2021-07-03 19:15:06 其他开发

useReducer Action 分派两次

场景 我有一个返回动作的自定义钩子.父组件“Container"使用自定义钩子并将动作作为道具传递给子组件. 问题 从子组件执行动作时,实际分派发生两次.现在,如果孩子直接使用钩子并调用动作,则分派只会发生一次. 如何重现它: 打开下面的沙箱并在 chrome 上打开 devtools,以便您可以看到我添加的控制台日志. https://codesandbox. ..
发布时间:2021-07-03 19:15:03 其他开发

使用 useEffect,如何跳过对初始渲染应用效果?

使用 React 的新 Effect Hooks,如果某些值在重新渲染之间没有改变,我可以告诉 React 跳过应用效果 - React 文档中的示例: useEffect(() => {document.title = `您点击了 ${count} 次`;}, [数数]);//只有在计数改变时才重新运行效果 但是上面的示例将效果应用于初始渲染,以及 count 已更改的后续重新渲染.如何告诉 ..
发布时间:2021-07-03 19:14:54 其他开发

反应钩子如何确定它们用于的组件?

我注意到,当我使用 React 钩子时,子组件的状态更改不会重新呈现没有状态更改的父组件.这是通过这个代码沙箱看到的:https://codesandbox.io/s/kmx6nqr4o 由于没有将组件作为参数或绑定上下文传递给钩子,我错误地认为反应钩子/状态更改只是触发了整个应用程序的重新渲染,例如 mithril 是如何工作的,以及 React 的 设计原则指出: React 递归 ..
发布时间:2021-07-03 19:14:51 其他开发

如何在反应中使用带有 useState 钩子的回调

我正在使用带有钩子的功能组件.我需要从孩子更新父母的状态.我在 Parent 中使用了一个 prop 函数.一切正常,除了我的 prop 函数正在获取以前的状态而不是当前状态.我的 prop 函数在 useState 钩子设置当前状态之前被执行.如何在 useState 调用后等待我的回调函数执行.我正在从基于类的组件中寻找类似 setState(state,callback) 的东西. 这 ..
发布时间:2021-07-03 19:14:48 其他开发

为什么需要 useRef 而不是可变变量?

我已阅读使用效果完整指南 -在过度反应中逆流而上. 例子说明如果我们想获取最新的count,可以使用useRef来保存可变变量,在async函数laster中获取: function Example() {const [count, setCount] = useState(0);const latestCount = useRef(count);useEffect(() => {//设置 ..
发布时间:2021-07-03 19:14:45 前端开发

反应 useReducer 异步数据获取

我正在尝试使用新的 react useReducer API 获取一些数据,但卡在需要异步获取的阶段.我只是不知道如何:/ 如何将数据获取放在 switch 语句中,或者这不是应该如何完成的方式? 从 'react' 导入 Reactconst ProfileContext = React.createContext()常量初始状态 = {数据:假}let reducer = async ..
发布时间:2021-07-03 19:14:42 其他开发

反应钩子.无法对卸载的组件执行 React 状态更新

我收到此错误: 无法对卸载的组件执行 React 状态更新.这是无操作,但它表示您的应用程序中存在内存泄漏.修理,在 useEffect 清理中取消所有订阅和异步任务功能. 当开始获取数据并卸载组件时,但函数正在尝试更新卸载组件的状态. 解决这个问题的最佳方法是什么? CodePen 示例. 默认函数 Test() {const [notSeenAmount, setNo ..
发布时间:2021-07-03 19:14:39 其他开发

useEffect 中的无限循环

我一直在使用 React 16.7-alpha 中的新钩子系统,当我处理的状态是对象或数组时,我陷入了 useEffect 的无限循环. 首先,我使用 useState 并用这样的空对象启动它: const [obj, setObj] = useState({}); 然后,在useEffect中,我再次使用setObj将其设置为空对象.作为第二个参数,我传递了 [obj],希望如果对象的 ..
发布时间:2021-07-03 19:14:32 其他开发