Ale*_*nas 3 javascript reactjs react-hooks
我需要在页面加载时发出请求(仅一次)。我试着做类似的事情
if(!array.length){doRequest())
Run Code Online (Sandbox Code Playgroud)
但是使用这种方法,react 会执行 1 个以上的请求,我认为它会降低我的应用程序速度。所以我需要解决这个问题。谢谢
小智 8
使用类组件时,解决方案是在 componentDidMount 生命周期中发出该请求,该生命周期仅被调用一次。
class Example extends React.Component {
componentDidMount() {
doRequest();
}
render() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试在功能组件中使用 Hooks 而不是 Class 组件,那么您应该使用:
function Example() {
useEffect(() => doRequest(), []);
return null;
}
Run Code Online (Sandbox Code Playgroud)
当然,希望 doRequest 在上层范围内声明或以某种方式导入。
希望这能解决您的问题,如果您需要对此有更深入的了解,我找到了一篇关于用钩子替换生命周期的精彩文章。
https://dev.to/trentyang/replace-lifecycle-with-hooks-in-react-3d4n
只需使用 useEffect Hook
import React, {useEffect} from 'react'
const func = () => {
useEffect(()=> {
doRequest()
},[]) // empty array means it only run once
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6383 次 |
| 最近记录: |