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

react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot

react的设计模式

  1. React 是 mvc 体系,vue 是 mvvm 体系
    • mvc: model(数据)-view(视图)-controller(控制器)
      1. 我们需要按照专业的语法去构建 app 页面,react 使用的是 jsx 语法
      2. 构建数据层,需要动态处理的的数据都要数据层支持
      3. 控制层: 当我们需要在视图中进行数据更新时,需要控制层去修改相关数据,然后 react 框架会根据数据的变化去更新视图
        数据驱动视图的渲染 => 单向驱动
        视图中的表单内容改变,想要修改数据,需要开发者自己去写事件监听函数,然后修改数据
    • mvvm: model(数据)-view(视图)-viewModel(视图模型监听层)
      1. 数据驱动视图渲染:监听数据的更新,当数据更新时,视图自动渲染
      2. 视图驱动数据的更新: 监听页面中表单元素的内容改变,自动去修改数据
        双向驱动

jsx 语法

  • jsx: javascript xml,就是把 html 和 javascript 结合起来写
function App() {useEffect(() => {console.log(process.env);// 请求接口fetch("/api/v1/users").then((res) => res.json()).then((res) => console.log(res));}, []);/*** 直接显示的静态组件*/const oBox = <h2>这是一个标题</h2>;/*** 需要传参的组件*/const oBox2 = function (title) {return <h2>这是一个标题,{title}</h2>;};return (<div className="App"><h1>Hello World</h1>{oBox}{oBox2("Hello jsx")}<p>当前的环境是:{process.env.NODE_ENV}</p><p>当前的环境是:{process.env.REACT_APP_API_URL}</p></div>);
}

在这里插入图片描述

{}支持 js 表达式,包括函数调用,变量引用,三目运算,逻辑运算等
不包括语句,如 iffor,while

  • ReactDOM.createRoot(document.getElementById("root")).render(<App />)不能把 body,html 作为根节点渲染,需要我们自己创建 div 作为根节点
  • 组件名必须大写,否则会报错
  • 一个组件中只能有一个根节点,如果有多个根节点,需要使用 fragment 包裹,或者使用 div 包裹,<></>也是 fragment 的语法糖

在jsx中写入不同的数据的展示
在这里插入图片描述

function App() {useEffect(() => {console.log(process.env);// 请求接口fetch("/api/v1/users").then((res) => res.json()).then((res) => console.log(res));}, []);const oBox = <h2>这是一个标题</h2>;const oBox2 = function (title) {return <h2>这是一个标题,{title}</h2>;};return (<div className="App"><h1>Hello World</h1>{oBox}{oBox2("Hello jsx")}{/* 支持字符串 */}{"hello react"}{/* 支持数组 */}<p>{[1, 2, 3, 4, 5]}</p>{/* 支持表达式 */}{1 + 3}{null}{undefined}{/* 不支持 object*/}<p>{{ name: "zs", age: 25 }}</p><p>当前的环境是:{process.env.NODE_ENV}</p><p>当前的环境是:{process.env.REACT_APP_API_URL}</p></div>);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 关于 PC打开“我的电脑”后有一些快捷如腾讯视频、百度网盘、夸克网盘、迅雷等各种捷方式在磁盘驱动器上面统一删除 的解决方法
  • MVC设计模式与delegate,tablview,Appdelegate,SceneDelegate
  • 大数据-131 - Flink CEP 案例:检测交易活跃用户、超时未交付
  • Java 设计模式-状态模式
  • prometheus基于consul的服务发现
  • 了解MySQL 高可用架构:主从备份
  • 【H2O2|全栈】关于CSS(3)CSS基础(三)
  • 大屏自适应缩放解决方案
  • 跨平台集成:在 AI、微服务和 Azure 云之间实现无缝工作流
  • 如何在YoloV8中添加注意力机制(两种方式)
  • PyTest装饰器
  • 腾讯云、阿里云、华为云优惠券领取、查看、使用教程分享
  • C++ 中的 override 和 overload的区别
  • 旋转电连接器航空插头插座的特点
  • 《深度学习》OpenCV轮廓检测 模版匹配 解析及实现
  • 【347天】每日项目总结系列085(2018.01.18)
  • CentOS 7 防火墙操作
  • Fabric架构演变之路
  • interface和setter,getter
  • jquery cookie
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Making An Indicator With Pure CSS
  • tab.js分享及浏览器兼容性问题汇总
  • Vim 折腾记
  • 聊聊directory traversal attack
  • 如何在GitHub上创建个人博客
  • 设计模式 开闭原则
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用Swoole加速Laravel(正式环境中)
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 06-01 点餐小程序前台界面搭建
  • Hibernate主键生成策略及选择
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (02)vite环境变量配置
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (ZT)薛涌:谈贫说富
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (一) 初入MySQL 【认识和部署】
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)母版页和相对路径
  • . Flume面试题
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net Application的目录
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .Net环境下的缓存技术介绍
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET下的多线程编程—1-线程机制概述
  • 。。。。。