当前位置: 首页 > java >正文

React学习(二)-变量

也是很无聊,竟然写这玩意,毕竟不是学术研究,普通工作没那么多概念性东西,会用就行╮(╯▽╰)╭
在React中,变量是用于存储和管理数据的基本单位。根据其用途和生命周期,React中的变量可以分为以下几类:


1. 状态变量(State)

  • 用途:用于存储组件的内部状态,状态变化会触发组件的重新渲染。
  • 定义方式
    • 函数组件:使用useState钩子。
      const [count, setCount] = useState(0);
      
    • 类组件:使用this.statethis.setState
      class MyComponent extends React.Component {state = { count: 0 };render() {return <div>{this.state.count}</div>;}
      }
      
  • 特点
    • 状态是组件私有的,外部无法直接访问。
    • 更新状态需要使用特定的方法(如setCountthis.setState)。

2. 属性变量(Props)

  • 用途:用于从父组件向子组件传递数据。
  • 定义方式
    • 父组件传递:
      <ChildComponent name="John" age={25} />
      
    • 子组件接收:
      function ChildComponent(props) {return <div>{props.name}, {props.age}</div>;
      }
      
  • 特点
    • Props是只读的,子组件不能直接修改。
    • 可以通过defaultProps设置默认值。

3. 局部变量

  • 用途:在函数或组件内部定义的临时变量,用于存储中间数据。
  • 定义方式
    function MyComponent() {const message = "Hello, World!";return <div>{message}</div>;
    }
    
  • 特点
    • 局部变量的生命周期仅限于函数或组件的执行过程。
    • 不会触发组件的重新渲染。

4. 上下文变量(Context)

  • 用途:用于在组件树中跨层级传递数据,避免逐层传递Props。
  • 定义方式
    • 创建上下文:
      const MyContext = React.createContext();
      
    • 提供上下文值:
      <MyContext.Provider value={{ theme: "dark" }}><ChildComponent />
      </MyContext.Provider>
      
    • 使用上下文值:
      function ChildComponent() {const context = useContext(MyContext);return <div>{context.theme}</div>;
      }
      
  • 特点
    • 适用于全局或共享数据的场景。
    • 避免“Props Drilling”问题。

5. Ref变量(Refs)

  • 用途:用于直接访问DOM元素或存储可变值,且不会触发重新渲染。
  • 定义方式
    • 使用useRef钩子:
      const inputRef = useRef(null);
      
    • 绑定到DOM元素:
      <input ref={inputRef} />
      
    • 访问DOM元素:
      inputRef.current.focus();
      
  • 特点
    • Ref的值在组件重新渲染时保持不变。
    • 适用于需要直接操作DOM的场景。

6. 全局变量

  • 用途:在组件外部定义的变量,可以在多个组件中共享。
  • 定义方式
    const globalVar = "This is a global variable";
    
  • 特点
    • 全局变量的生命周期与应用程序一致。
    • 不推荐过度使用,可能导致代码难以维护。

7. 计算变量(Derived State)

  • 用途:基于状态或属性计算得出的变量。
  • 定义方式
    const total = count * price;
    
  • 特点
    • 通常用于根据现有状态或属性生成新的数据。
    • 避免在状态中存储冗余数据。

8. 模块变量

  • 用途:在模块中定义的变量,可以在模块内的多个组件中共享。
  • 定义方式
    // module.js
    export const moduleVar = "This is a module variable";
    
  • 特点
    • 模块变量的作用域仅限于当前模块。
    • 适用于模块内共享数据的场景。
http://www.xdnf.cn/news/6908.html

相关文章:

  • Docker常见命令解读
  • Vue.js---watch 的实现原理
  • SpringSecurity授权、认证
  • 数据库blog1_信息(数据)的处理与效率提升
  • Java 应用如何实现 HTTPS:加密数据传输的实用指南
  • liunx常用命令总结
  • RT Thread FinSH(msh)调度逻辑
  • mysql中4种扫描方式和聚簇索引非聚簇索引【爽文一篇】
  • 2025年EB SCI2区TOP,多策略改进黑翅鸢算法MBKA+空调系统RC参数辨识与负载聚合分析,深度解析+性能实测
  • Java面向对象基础学习笔记
  • Kafka 生产者工作流程详解
  • RAG与微调:企业知识库落地的技术选型
  • Axure元件动作四:设置选中
  • 【RabbitMQ】整合 SpringBoot,实现工作队列、发布/订阅、路由和通配符模式
  • Vue.js 教学第三章:模板语法精讲,插值与 v-bind 指令
  • 养生精要:五大维度打造健康生活
  • day33-网络编程
  • java中的运算符
  • C/C++之内存管理
  • Python爬虫-爬取百度指数之人群兴趣分布数据,进行数据分析
  • [Java][Leetcode simple] 13. 罗马数字转整数
  • 目标检测工作原理:从滑动窗口到Haar特征检测的完整实现
  • 使用Python和`python-docx`库复制Word文档样式
  • 相机Camera日志分析之十一:高通相机Camx hal预览1帧logcat日志process_capture_result详解
  • 时间序列预测从入门到精通:基础知识
  • Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器
  • QT6 源(105)篇二:阅读与注释 QAction,给出源代码
  • ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化
  • 系统架构-大数据架构设计
  • 【沉浸式求职学习day42】【算法题:滑动窗口】