React-02-jsx

React 使用 JSX 来替代常规的 JavaScript。

JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。

  JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。

  它是类型安全的,在编译过程中就能发现错误。

  使用 JSX 编写模板更加简单快速。
  html标签部分允许嵌套,但顶层仅允许有1个标签。(可以用<标签名></标签名>解决多节点问题)

  可以在 JSX 中使用 JavaScript 表达式。表达式写在花括号 {} 中。

  JSX 中不能使用 if else 语句,但可以使用三元运算。

  React 推荐使用内联样式。

var myStyle = { fontSize: 100, color: '#FF0000'};
ReactDOM.render(
    <h1 style = {myStyle}>hello world</h1>,
    document.getElementById('example')
);

注释:需要写在花括号中

ReactDOM.render(
    <div><h1>hello world</h1>{/*注释...*/}</div>,
    document.getElementById('example')
);

数组:JSX 允许在模板中插入数组,数组会自动展开所有成员

var arr = [ <h1>你好</h1>, <h2>react</h2>,];
ReactDOM.render(
    <div>{arr}</div>,
    document.getElementById('example')
);

数据绑定(在JSX语法中, 使用变量/表达式)

  JS中 嵌套标签, 直接使用<> 声明标签

  如果在JS的html标签中, 要写JS代码, 需要使用 {} 来声明书写的是JS代码

  大括号内, 可以使用变量/表达式/三目运算/数组 (但是不能直接写入一个对象)

  如果返回一堆标签, 可以用数组装着, 然后在{} 直接使用数组变量即可.

var company = {
    name: "jsx",
    isListed: true
};
function randomFn() {
    return Math.random()*10;
}
var el = (
    <div>
       <h1>HTML DOM节点</h1>
        <h3>使用表达式:</h3>
        <div>{ "花括号内写js代码,执行之后,输出返回值" }</div>
        <div>1+1 = { 1+1 }</div>
        <h3>数据绑定</h3>
        <div>{ JSON.stringify(company) }</div>
        <div>{ company.name }</div>
        <div>{ company.isListed ? "上市公司" : "非上市公司" }</div>
        <div>{ randomFn() }</div>
    </div>
);
var oRoot = document.getElementById("root");
ReactDOM.render(el,oRoot);

属性绑定

  可以使用引号 "" 来定义属性,值为字符串

  也可以使用花括号 {} 来定义属性,值为 JavaScript 表达式:

       attr属性={表达式}

       注意:花括号 {} 外面不能套引号

  绑定class类名,必须使用className

  style属性的值必须是一个对象

var company = {
    name: "jsx",
    isListed: true,
    logo: "http://www.offcn.com/statics/images/zgimg/index2019.png",
    type: "职业教育类",
    titleStyle: "red",
    style:{
        height: '30px',
       "lineHeight": "30px",
    }
};

var el = (
    <div>
        <img src={company.logo}/>
         <h2 style={{backgroundColor: "#999"}}>{ company.name }</h2>
         <div style={company.style}>{ company.type }</div>
         <div className="box" title={company.isListed ? "上市公司" : "非上市公司"}>
             <h2 className={company.titleStyle}>{ company.name }</h2>
         </div>
    </div>
);

条件渲染

var el = (<div>{
    (function () {
        if(company.isListed){
            return (<p>上市公司</p>);
        }else{
            return (<p>非上市公司</p>);
        }
    })()
}</div>);

列表渲染

var company = {
    name: "jsx",
    isListed: true,
    course:[
        {id:"001", name:"大前端", dec:"H5/小程序/APP"},
        {id:"002", name:"Java", dec:null},
        {id:"003", name:"Python", dec:"+人工智能"},
        {id:"004", name:"互联网营销", dec:"SEO/SEM/新媒体/电商"},
        {id:"005", name:"UI/UE", dec:"交互设计"},
        {id:"006", name:"软件测试", dec:null},
        {id:"007", name:"大数据", dec:null},
        {id:"008", name:"Linux", dec:"+云计算"},
        {id:"009", name:"Unity游戏开发", dec:"+AR/VR"}
    ]
};

调用数组company.course,在JSX使用map方法将数组数据重构为元素集合:

在map循环时候, 返回一个个标签, 组成一个数组, 然后使用

var el = (
    <div>
        <h1> 数组对象遍历 </h1>
        <h2> { company.name }</h2>
        <ol>
            {company.course.map(function (item,index) {
                return (<li key={item.id} style={{backgroundColor:colors[index]}}>
                    <div>序号: {index}</div>
                    <div>id: {item.id}</div>
                    <div>name: {item.name}</div>
                    <div>描述: {item.dec}</div>
                </li>);
            })}
       </ol>
    }
   </div>
);

Keys 可以在 DOM 中的某些元素被增加或删除的时候帮助 React 识别哪些元素发生了变化。

因此你应当给数组中的每一个元素赋予一个确定的标识。

  key在兄弟元素中必须唯一,但并非全局唯一,即在不同组件中,key可以相同。

  key 会作为给 React 的提示,但不会传递给你的组件。如果您的组件中需要使用和 key 相同的值,请将其作为属性传递

 

源码来自:https://pan.quark.cn/s/7a757c0c80ca 《在Neovim中运用Lua的详尽教程》在当代文本编辑器领域,Neovim凭借其卓越的性能、可扩展性以及高度可定制的特点,赢得了程序开发者的广泛青睐。 其中,Lua语言的融入更是为Neovim注入了强大的活力。 本指南将深入剖析如何在Neovim中高效地运用Lua进行配置和插件开发,助你充分发挥这一先进功能的潜力。 一、Lua为何成为Neovim的优选方案经典的Vim脚本语言(Vimscript)虽然功能完备,但其语法结构与现代化编程语言相比显得较为复杂。 与此形成对比的是,Lua是一种精简、轻量且性能卓越的脚本语言,具备易于掌握、易于集成的特点。 因此,Neovim选择Lua作为其核心扩展语言,使得配置和插件开发过程变得更加直观和便捷。 二、安装与设置在Neovim中启用Lua支持通常十分简便,因为Lua是Neovim的固有组件。 然而,为了获得最佳体验,我们建议升级至Neovim的最新版本。 可以通过`vim-plug`或`dein.vim`等包管理工具来安装和管理Lua插件。 三、Lua基础在着手编写Neovim的Lua配置之前,需要对Lua语言的基础语法有所掌握。 Lua支持变量、函数、控制流、表(类似于数组和键值对映射)等核心概念。 它的语法设计简洁明了,便于理解和应用。 例如,定义一个变量并赋值:```lualocal myVariable = "Hello, Neovim!"```四、Lua在Neovim中的实际应用1. 配置文件:Neovim的初始化文件`.vimrc`能够完全采用Lua语言编写,只需在文件首部声明`set runtimepath^=~/.config/nvim ini...
基于STM32 F4的永磁同步电机无位置传感器控制策略研究内容概要:本文围绕基于STM32 F4的永磁同步电机(PMSM)无位置传感器控制策略展开研究,重点探讨在不使用机械式位置传感器的情况下,如何通过算法实现对电机转子位置和速度的精确估算与控制。文中结合STM32 F4高性能微控制器平台,采用如滑模观测器(SMO)、扩展卡尔曼滤波(EKF)或高频注入法等先进观测技术,实现对电机反电动势或磁链的实时估算,进而完成磁场定向控制(FOC)。研究涵盖了控制算法设计、系统建模、仿真验证(可能使用Simulink)以及在嵌入式平台上的代码实现与实验测试,旨在提高电机驱动系统的可靠性、降低成本并增强环境适应性。; 适合人群:具备一定电机控制理论基础和嵌入式开发经验的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动开发的工程师;熟悉C语言和MATLAB/Simulink工具者更佳。; 使用场景及目标:①为永磁同步电机驱动系统在高端制造、新能源汽车、家用电器等领域提供无位置传感器解决方案的设计参考;②指导开发者在STM32平台上实现高性能FOC控制算法,掌握位置观测器的设计与调试方法;③推动电机控制技术向低成本、高可靠方向发展。; 其他说明:该研究强调理论与实践结合,不仅包含算法仿真,还涉及实际硬件平台的部署与测试,建议读者在学习过程中配合使用STM32开发板和PMSM电机进行实操验证,以深入理解控制策略的动态响应与鲁棒性问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值