Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 组件将为react功能组件安装?_Reactjs_React Chartjs_React Functional Component - Fatal编程技术网

Reactjs 组件将为react功能组件安装?

Reactjs 组件将为react功能组件安装?,reactjs,react-chartjs,react-functional-component,Reactjs,React Chartjs,React Functional Component,我想知道,对于react类组件,我们有componentWillMount()lifecycle方法,我们可以在加载组件之前执行任务。例如,调用后端并使用响应显示该前端中的数据。 如果我想在功能组件中使用相同的东西呢?就像我使用react-chartJS一样,我希望从后端响应中检索数据值,然后图表将基于这些数据填充 我希望我已经很好地解释了问题陈述,如果没有,请询问任何信息。组件将在初始渲染之前只调用一次。 我制作了一个示例代码,请在下面查看 import React,{useState,us

我想知道,对于react类组件,我们有componentWillMount()lifecycle方法,我们可以在加载组件之前执行任务。例如,调用后端并使用响应显示该前端中的数据。 如果我想在功能组件中使用相同的东西呢?就像我使用react-chartJS一样,我希望从后端响应中检索数据值,然后图表将基于这些数据填充


我希望我已经很好地解释了问题陈述,如果没有,请询问任何信息。

组件将在初始渲染之前只调用一次。
我制作了一个示例代码,请在下面查看

import React,{useState,useffect}来自“React”;
导入“/styles.css”;
导出默认函数App(){
const[mounted,setMounted]=useState(false)
如果(!已安装){
//组件的代码将安装在此处
//此代码在初始渲染之前仅调用一次
}
useffect(()=>{
setMounted(真)
},[])
返回(
);

}
组件将在初始渲染之前仅调用一次。
我制作了一个示例代码,请在下面查看

import React,{useState,useffect}来自“React”;
导入“/styles.css”;
导出默认函数App(){
const[mounted,setMounted]=useState(false)
如果(!已安装){
//组件的代码将安装在此处
//此代码在初始渲染之前仅调用一次
}
useffect(()=>{
setMounted(真)
},[])
返回(
);

}
事实上,Tony的答案完全正确,但我想在这里添加更多案例 我将制作可重复使用的定制挂钩

1.关心额外的dom渲染吗 它不会导致额外的dom渲染

const useOptimizedComponentWillMount = callback => {
  const mounted = useRef(false)
  if (!mounted.current) callback()

  useEffect(() => {
    mounted.current = true
  }, []);
};
注意:您可能需要在typescript中装入
和&mounted.current

2.不关心额外的dom渲染 这正是托尼的回答

用法
const-App=()=>{
useComponentWillMount(()=>console.log(“will mount”))
返回控制台.log(“呈现dom”)| |布局
};
//将增加
//(2)渲染dom
const-App=()=>{
useOptimizedComponentWillMount(()=>console.log(“will mount”))
返回控制台.log(“呈现dom”)| |布局
};
//将增加
//渲染dom

事实上,Tony的答案完全正确,但我想在这里添加更多案例 我将制作可重复使用的定制挂钩

1.关心额外的dom渲染吗 它不会导致额外的dom渲染

const useOptimizedComponentWillMount = callback => {
  const mounted = useRef(false)
  if (!mounted.current) callback()

  useEffect(() => {
    mounted.current = true
  }, []);
};
注意:您可能需要在typescript中装入
和&mounted.current

2.不关心额外的dom渲染 这正是托尼的回答

用法
const-App=()=>{
useComponentWillMount(()=>console.log(“will mount”))
返回控制台.log(“呈现dom”)| |布局
};
//将增加
//(2)渲染dom
const-App=()=>{
useOptimizedComponentWillMount(()=>console.log(“will mount”))
返回控制台.log(“呈现dom”)| |布局
};
//将增加
//渲染dom

1),即使在类组件中也不应使用。2). 您正在寻找。您所能做的最好的方法是通过使用
useffect
.1)的空依赖项数组来模拟
componentDidMount
,并且即使在类组件中也不应使用。2). 您正在寻找。您所能做的最好的事情就是通过为
useffect
使用空的依赖项数组来模拟
componentDidMount
。在这个问题上,您能帮我吗?你能帮我解决这个问题吗?
const App = () => {
  useComponentWillMount(() => console.log("will mount"))
  return console.log("render-dom") || <div>Layout</div>
};
// will mount
// (2)render-dom
const App = () => {
  useOptimizedComponentWillMount(() => console.log("will mount"))
  return console.log("render-dom") || <div>Layout</div>
};
// will mount
// render-dom