草庐IT

useEffect

全部标签

javascript - React Hooks 异步最佳实践

现在使用useEffects,可以将componentDidMount替换为带有Hooks的React组件。场景“对服务器的初始唯一调用”:为实现这一点,useEffect中的DependencyList(useEffect的第二个参数)每次都应该是一个空数组,否则应用程序将向服务器发送每个状态更改的获取调用.这意味着,这是获取数据的最佳实践useEffect(()=>{console.log("useEffect,fetchDatahere");},[]);最好的做法是使用[]作为DependencyList参数来禁用请求每个状态更改的服务器吗?链接到githubhttps://gi

javascript - React Hooks useState+useEffect+event 给出陈旧状态

我正在尝试将事件发射器与ReactuseEffect和useState一起使用,但它总是获取初始状态而不是更新后的状态。如果我直接调用事件处理程序,它会起作用,即使使用setTimeout。如果我将值传递给useEffect()第二个参数,它会使其工作,但是这会导致每次值更改时重新订阅事件发射器(由击键触发).我做错了什么?我已经尝试了useState、useRef、useReducer和useCallback,但无法正常工作。这是一个复制品:importReact,{useState,useEffect}from"react";import{ControlledasCodeMirro

javascript - 自定义 useEffect 第二个参数

新的ReactAPI包括useEffect(),它的第二个参数采用一个Object,React比较它以查看组件是否更新。例如useEffect(()=>{constsubscription=props.source.subscribe();return()=>{subscription.unsubscribe();};},[props.source],);其中[props.source]是有问题的参数。我的问题是:我可以定义一个自定义函数来运行以检查Prop是否已更改吗?我有一个自定义对象,React似乎无法判断它何时更改。 最佳答案

javascript - React Hooks useEffect,添加依赖触发死循环

在我的useEffect中,我有一个Prop依赖项(setIsValid)。当我将此依赖项添加到useEffect时,它会陷入无限循环。调用子组件时为父级:constsetIsValid=(bool)=>{consttmpStateCopy=Object.assign({},state);tmpStateCopy.isValid=bool;setState(tmpStateCopy);};return在子组件中:const{setIsValid}=props;const[state,setState]=useState({transformations:[],duplicateInde

javascript - 将事件处理程序绑定(bind)到文档并通过 useEffect 访问 firebase api 数据

快速版:我的最终目标是执行类似下面链接的操作,但每个useEffect对firebase进行异步调用,其中列表数据由firebase对象内容组成。https://codesandbox.io/s/usage-pxfy7问题在下面的代码中,useEffect封装了对firebase执行ping操作并取回一些称为“客户端”的数据的代码。数据已完美检索。然后我使用useState将该数据存储到useState的两个不同实例中。数据存储在clientList和clientListForRender中。到目前为止一切顺利。现在问题开始了。我有第三个useState实例,它接受一个数字。我想为文档

javascript - 无法删除 useEffect 之外的事件监听器

我在useEffect中添加了一个事件监听器。由于useEffect第二个参数([]),它会在第一次重新渲染后运行一次。然后我尝试在useEffect之外(在handleSearch函数中)将其删除,但它不起作用。我怀疑它与功能范围有关,但不完全理解。也许有解决方法?consthandleSearch=()=>{window.removeEventListener('resize',setPageHeightWrapper);};const[pageHeight,setPageHeight]=useState(0);functionsetPageHeightWrapper(){setP

javascript - react Hook : dispatch action from useEffect

我的文件夹结构:|--App|--Components|--PageA.js|--PageB.js|--PageC.js|--common-effects|--useFetching.js我正在重构我的代码以使用Reacthooks从API获取数据.我想从useFetching.js中的useEffect发送一个被saga中间件拦截的Action。仅当组件(PageA、PageB、PageC)挂载时才应分派(dispatch)此操作。我正在使用redux、react-redux和redux-saga。PageA.js:function(props){useFetching(action

javascript - 使用 jquery 表情符号插件时,componentDidMount 的行为与 useEffect 不同

我一直在我的一个组件上使用jquery表情符号插件,直到我完成了我正在构建的自定义插件。出于某种原因,当我在componentDidMount中调用表情符号插件时,一切正常除了利用自定义按钮显示表情符号模式的能力。当我使用自定义按钮时,表情符号插件不会将事件附加到按钮。疯狂的是,我可以在useEffect中使用完全相同的代码,并且它可以很好地将事件监听器附加到自定义按钮。我通过在页面加载后在Web控制台中查看附加到元素的事件来验证未附加事件监听器。您可以通过将此组件放置在应用程序的某处(并使用emoji-areaplugin导入jquery)轻松重现此问题:importReact,{u

javascript - 使用requestAnimationFrame和cancelAnimationFrame时useEffect的执行顺序和内部清理逻辑是什么?

根据React文档,useEffect将在重新运行useEffect部分之前触发清理逻辑。Ifyoureffectreturnsafunction,Reactwillrunitwhenitistimetocleanup...ThereisnospecialcodeforhandlingupdatesbecauseuseEffecthandlesthembydefault.Itcleansupthepreviouseffectsbeforeapplyingthenexteffects...但是,当我在useEffect中使用requestAnimationFrame和cancelAnim

javascript - componentWillUnmount 与 React useEffect Hook

如何使用useEffectHook(或与此相关的任何其他Hook)来复制componentWillUnmount?在传统的类组件中,我会做这样的事情:classEffectextendsReact.PureComponent{componentDidMount(){console.log("MOUNT",this.props);}componentWillUnmount(){console.log("UNMOUNT",this.props);}render(){returnnull;}}使用useEffect钩子(Hook):functionEffect(props){React.us