react笔记(二)

常用语法基础

列表渲染

类似vue中的v-for,react中也有类似的列表渲染方法。首先我们知道,在jsx中标签即是变量,因此我们可以创建一个标签数组。可以借助map等函数,实现值到标签的映射。

giftMsg=["123","345","567"];
const giftMsgs = giftMsg.map((item,index)=>{
  return (<Text>{item}</Text>)
})

如上,通过map,映射出一个组件数组,该数组可以被jsx解析。

条件渲染

由于react组件本质是函数,所以渲染什么内容完全可以自己确定,渲染回调是return,我们可以控制这个return放回我们想要的内容,可以在return里面加入逻辑,代码示例如下:

if(a)
  return (
	{
	  b?
	  <p>1</p>
	  :
	  <p>2</p>
	}
  )
else
  return (
	<p>3</p>
  )
ref

react要操作底层节点,除了数据驱动外,还可以用ref转发。

const FancyButton = React.forwardRef((props, ref) => (
  <button ref={ref} className="FancyButton">
    {props.children}
  </button>
));

// 你可以直接获取 DOM button 的 ref:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

如上,官方文档的资料,通过转发,我们可以通过ref直接操作底层dom节点。

生命周期

回顾一下vue的生命周期:

  • beforeCreate(创建组件前)
  • created(创建组件后)
  • beforeMount(挂载前)
  • mounted(挂载后)
  • beforeUpdate(更新前)
  • updated(更新后)
  • beforeDestroy(销毁前)
  • destroyed(销毁后)

react与vue有部分相似,但也有区别:

​ nextProps与nextStates表示下一状态。

  • componentWillMount (挂载前)
  • componentDidMount 挂载后,在挂载前和挂载后之间会调用第一次render
  • componentWillReceiveProps 在组件接收到一个新的 prop (更新后)时被调用,此生命周期可以setState
  • shouldComponentUpdate (更新前确认)返回false则不执行render
  • componentWillUpdate(确认更新前)
  • componentDidUpdate (更新后)
  • componentWillUnmount(销毁前)

生命周期的作用就是提供钩子做一些操作。而且生命周期是MVVM框架必然的结果,要形成一个循环渲染的环。

性能优化

降低渲染频率

与传统web优化由于,频繁的dom修改会导致回流,影响性能。

因此,在有虚拟dom之后,我们依旧要减少state的频繁操作,比如把多次state操作合并一次。对于不影响渲染的state,我们可以在 shouldComponentUpdate 生命钩子中进行操作,return一个false,减少render的次数从而提高性能。

借助key减少dom的操作量

key的作用可以用来帮助虚拟dom做好区分,是diff算法的关键一环。

比如说列表渲染的时候,如果中间删除掉某个节点,在设置好key之后,虚拟dom会自动以最少步骤完成变化。如果没有key,虚拟dom不清楚节点的对应关系,会按顺序一一对比,这会导致本没有变化的节点被判定为发生了变化,影响了性能。

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新和团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算和编程软件,广泛应用于数学建模、数据分析和科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型和实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法和结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟和结果可视化等一系列工作。然而,具体的建模细节和解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
### 黑马程序员 React 学习笔记 #### 安装 Node.js 环境与 `create-react-app` 为了开始 React 编程的学习,首先需要安装 Node.js 环境以及全局安装用于创建新 React 应用程序的命令行工具`create-g create-react-app ``` 对于那些偏好使用 Yarn 作为包管理器的人来说,则可以安装 Yarn 来代替默认的 NPM。 ```bash npm install -g yarn ``` 一旦这些准备工作就绪,就可以通过下面这条指令轻松地建立一个新的 React 项目[^1]。 #### 创建并启动 React 项目 有了上述准备之后,下一步就是利用 `create-react-app` 命令快速搭建起一个名为 `my-app` 的全新应用框架,并且能够立即运行它来进行初步测试或开发工作。 ```bash npx create-react-app my-app cd my-app npm start ``` 如果选择了Yarn的话, 则应采用相应的启动方式: ```bash yarn start ``` 此时浏览器会自动打开页面展示新建的应用成果。 #### 处理常见错误 在实际操作过程中可能会遇到一些报错情况,具体解决办法取决于所遇问题的具体表现形式。通常官方文档或是社区论坛都是寻找解决方案的好去处。 #### 结合 Redux 进行状态管理 当应用程序变得复杂起来时,引入Redux可以帮助更好地管理和共享数据流。为此需先安装必要的依赖库[@reduxjs/toolkit](https://github.com/reduxjs/redux-toolkit) 和 [react-redux](https://react-redux.js.org/) ,以便于连接React组件至Redux Store。 ```bash npm i @reduxjs/toolkit react-redux ``` 接着定义store目录结构以适应业务逻辑需求[^2]。 #### 精简后的核心文件概览 经过一系列设置后,最终留下的主要源码文件可能看起来像这样: - **App.js**: 作为整个项目的根组件负责呈现主要内容区域。 ```javascript function App() { return ( <div className="App"> this is App </div> ); } export default App; ``` - **index.js**: 此处包含了入口点代码,初始化React DOM并将顶层组件挂载到HTML中的指定位置。 ```javascript import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />); ``` 以上便是基于黑马程序员提供的资料整理而成的基础版React学习指南[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值