在ReactJS中的函数组件内声明变量

在ReactJS中的函数组件内声明变量,reactjs,react-functional-component,Reactjs,React Functional Component,我有一个变量“myVar”(不是状态) 解决方案2:声明组件道具(但不公开) 什么是常规解决方案?使用挂钩。在重新渲染期间,引用存储的值不会重新初始化。更改引用存储的值不会触发重新渲染,因为这不是状态更改。使用挂钩。在重新渲染期间,引用存储的值不会重新初始化。更改引用存储的值不会触发重新渲染,因为这不是状态更改。好的,在类组件中,这可以通过组件安装和组件更新逻辑解决。通过使用useRef和useffect钩子,可以对功能组件执行相同的行为: const myComponent = () =>

我有一个变量“myVar”(不是状态)

解决方案2:声明组件道具(但不公开)


什么是常规解决方案?

使用挂钩。在重新渲染期间,引用存储的值不会重新初始化。更改引用存储的值不会触发重新渲染,因为这不是状态更改。

使用挂钩。在重新渲染期间,引用存储的值不会重新初始化。更改引用存储的值不会触发重新渲染,因为这不是状态更改。

好的,在类组件中,这可以通过组件安装组件更新逻辑解决。通过使用useRefuseffect钩子,可以对功能组件执行相同的行为:

const myComponent = () => {
      const mounted = useRef();
    
    useEffect(() => {
        if (!mounted.current) {
           // do componentDidMount logic
            mounted.current = true;
            const myVar = false
        } else {
          // do componentDidUpdate logic
        }
      });
    }

好的,在类组件中,这可以通过componentDidMountcomponentdiddupdate逻辑来解决。通过使用useRefuseffect钩子,可以对功能组件执行相同的行为:

const myComponent = () => {
      const mounted = useRef();
    
    useEffect(() => {
        if (!mounted.current) {
           // do componentDidMount logic
            mounted.current = true;
            const myVar = false
        } else {
          // do componentDidUpdate logic
        }
      });
    }

在您的情况下,
ref
非常有效。您可以使用
useRef
。在您的案例中阅读更多内容
ref
非常有效。您可以使用
useRef
。多读点书给你听。是的,目标是不触发“无用”的重新渲染。我将使用useRef,但我发现调用“.current”并不方便,我的问题是doc:Tank you。是的,目标是不触发“无用”的重新渲染。我将使用useRef,但我发现调用“.current”并不方便。我的问题在文档中:
const myComponent = ({myVar = true}) => {
  ....
}
const myComponent = () => {
      const mounted = useRef();
    
    useEffect(() => {
        if (!mounted.current) {
           // do componentDidMount logic
            mounted.current = true;
            const myVar = false
        } else {
          // do componentDidUpdate logic
        }
      });
    }