react-hooks相关内容
我认为 useEffect 钩子在每次渲染后运行,如果提供了一个空的依赖数组: useEffect(() => {performSideEffect();}, []); 但是这和下面的有什么区别? useEffect(() => {performSideEffect();}); 注意末尾缺少 [].linter 插件不会发出警告. 解决方案 不太一样. 给它一个空数组就像 c
..
我正在尝试使用组件接收的道具使用 React hook setState() 设置状态.我尝试使用以下代码: import React,{useState, useEffect} from 'react';const Persons = (props) =>{//console.log(props.name);const [nameState , setNameState] = useState
..
如果我们想限制useEffect只在组件挂载时运行,我们可以在[]中添加useEffect的第二个参数. useEffect(() => {//...}, []); 但是我们怎样才能让useEffect只在组件更新的那一刻运行,除了初始挂载之外? 解决方案 如果您希望 useEffect 仅在除初始安装之外的更新上运行,您可以使用 useRef 来跟踪 initialMountuseE
..
我有一些副作用要应用,想知道如何组织它们: 作为单次使用效果 或几个 useEffects 在性能和架构方面哪个更好? 解决方案 你需要遵循的模式取决于你的用例. 首先,您可能会遇到一种情况,您需要在初始挂载期间添加事件侦听器并在卸载时清理它们,另一种情况是需要清理并重新添加特定侦听器道具变化.在这种情况下,使用两个不同的 useEffect 可以更好地将相关逻辑保持在
..
我正在尝试使用 React 钩子将类重构为无状态组件. 组件本身非常简单,我看不出我哪里出错了,因为它几乎是从 react 文档中复制粘贴过来的. 当用户单击按钮时,组件会显示一个弹出窗口(按钮通过道具传递给我的组件).我正在使用 typescript. 我评论了在 hooks 版本中没有做我想做的事情 这是我原来的课程: export interface NodeMen
..
我只希望useEffect在我的依赖列表改变时运行,它也在每次挂载组件时运行,有什么办法不挂载时触发吗? 如果某些值,你可以告诉 React 跳过应用效果在重新渲染之间没有改变. 我最初认为这意味着它不应该在后续装载时重新渲染,但 这个问题澄清了这一点. 我在主“页面"(react-router)中显示记录列表,用户可以选择单个记录并转到详细信息页面,然后返回到主页面 - 所以主
..
我的代码导致了意外数量的重新渲染. function App() {const [isOn, setIsOn] = useState(false)const [定时器,setTimer] = useState(0)console.log('重新渲染', 计时器)useEffect(() => {让间隔如果(isOn){间隔 = setInterval(() => setTimer(timer +
..
我正在阅读有关功能更新的React Hook 文档,请参阅这句话: “+"和“-"按钮使用功能形式,因为更新值基于之前的值 但我看不出需要功能更新的目的是什么,它们与直接使用旧状态计算新状态有什么区别. 为什么 React useState Hook 的 updater 函数需要函数式更新表单? 有哪些例子我们可以清楚地看到差异(所以使用直接更新会导致错误)? 例如,如果我
..
我知道你可以通过传递一个数组作为可选的第二个参数来告诉 React 跳过一个效果. 例如: useEffect(() => {document.title = `您点击了 ${count} 次`;}, [数数]);//只有在计数改变时才重新运行效果 但是如果我想控制比较怎么办?添加我自己的比较逻辑. 我希望像 React.memo 这样的东西可以将函数作为第二个参数传递. 解
..
场景 我有一个返回动作的自定义钩子.父组件“Container"使用自定义钩子并将动作作为道具传递给子组件. 问题 从子组件执行动作时,实际分派发生两次.现在,如果孩子直接使用钩子并调用动作,则分派只会发生一次. 如何重现它: 打开下面的沙箱并在 chrome 上打开 devtools,以便您可以看到我添加的控制台日志. https://codesandbox.
..
我正在尝试使用 React 钩子来解决一个简单的问题 const [personState,setPersonState] = useState({ DefinedObject }); 具有以下依赖项. “依赖项":{“反应":“^ 16.8.6","react-dom": "^16.8.6",“反应脚本":“3.0.0"} 但我仍然收到以下错误: ./src/App.js 第
..
我希望状态在 props 更改时重新加载,但这不起作用并且 user 变量在下一次 useState 调用时没有更新,有什么问题? function Avatar(props) {const [user, setUser] = React.useState({...props.user});返回 user.avatar ?():(
正在加载..
..
使用 React 的新 Effect Hooks,如果某些值在重新渲染之间没有改变,我可以告诉 React 跳过应用效果 - React 文档中的示例: useEffect(() => {document.title = `您点击了 ${count} 次`;}, [数数]);//只有在计数改变时才重新运行效果 但是上面的示例将效果应用于初始渲染,以及 count 已更改的后续重新渲染.如何告诉
..
我注意到,当我使用 React 钩子时,子组件的状态更改不会重新呈现没有状态更改的父组件.这是通过这个代码沙箱看到的:https://codesandbox.io/s/kmx6nqr4o 由于没有将组件作为参数或绑定上下文传递给钩子,我错误地认为反应钩子/状态更改只是触发了整个应用程序的重新渲染,例如 mithril 是如何工作的,以及 React 的 设计原则指出: React 递归
..
我正在使用带有钩子的功能组件.我需要从孩子更新父母的状态.我在 Parent 中使用了一个 prop 函数.一切正常,除了我的 prop 函数正在获取以前的状态而不是当前状态.我的 prop 函数在 useState 钩子设置当前状态之前被执行.如何在 useState 调用后等待我的回调函数执行.我正在从基于类的组件中寻找类似 setState(state,callback) 的东西. 这
..
我已阅读使用效果完整指南 -在过度反应中逆流而上. 例子说明如果我们想获取最新的count,可以使用useRef来保存可变变量,在async函数laster中获取: function Example() {const [count, setCount] = useState(0);const latestCount = useRef(count);useEffect(() => {//设置
..
我正在尝试使用新的 react useReducer API 获取一些数据,但卡在需要异步获取的阶段.我只是不知道如何:/ 如何将数据获取放在 switch 语句中,或者这不是应该如何完成的方式? 从 'react' 导入 Reactconst ProfileContext = React.createContext()常量初始状态 = {数据:假}let reducer = async
..
我收到此错误: 无法对卸载的组件执行 React 状态更新.这是无操作,但它表示您的应用程序中存在内存泄漏.修理,在 useEffect 清理中取消所有订阅和异步任务功能. 当开始获取数据并卸载组件时,但函数正在尝试更新卸载组件的状态. 解决这个问题的最佳方法是什么? CodePen 示例. 默认函数 Test() {const [notSeenAmount, setNo
..
考虑规范的 useState 示例: import React, { useState } from 'react';const MyComponent = () =>{const [count, setCount] = useState(0);控制台日志(计数);返回 (
..
我一直在使用 React 16.7-alpha 中的新钩子系统,当我处理的状态是对象或数组时,我陷入了 useEffect 的无限循环. 首先,我使用 useState 并用这样的空对象启动它: const [obj, setObj] = useState({}); 然后,在useEffect中,我再次使用setObj将其设置为空对象.作为第二个参数,我传递了 [obj],希望如果对象的
..