zoukankan      html  css  js  c++  java
  • ① jsx

    const element = <h1>Hello world</h1>
    

    1 为什么使用 JSX?

    • React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合

    • React 通过将标记逻辑存放在“组件”的松散耦合单元之中来实现关注点分离

    2 在 JSX 中嵌入表达式

    可以在 花括号 内放置任何有效的 js 表达式

    const name = 'Josh Perez';
    const element = <h1>Hello, { name }</h1>
    
    ReactDOM.render(
    	element,
    	document.getElementById('root')
    )
    

    3 JSX 也是一个表达式

    • 编译后,JSX 表达式也会被转为 js 函数调用,并且得到 js 对象
    function formatName(user) {
    	return user.firstName + ' ' + user.lastName;
    }
    function getGreeting(user) {
    	if(user) {
    		return <h1>Hello, { formatName(user) }!</h1>
    	}
    	return <h1>Hello, Stranger.</h1>
    }
    

    4 JSX 特定属性

    4.1 引号 -> 将属性值指定为字符串字面量

    const element = <div tabIndex="0"></div>
    

    4.2 花括号 -> 在属性值中插入一个js表达式

    const element = <img src={ user.avatarUrl } />
    

    4.3 不可同时使用 引号花括号

    警告
    • JSX语法更接近js而不是html,所以ReactDOM使用驼峰命名来定义属性名

    class -> className tabindex -> tabIndex

    5 使用 JSX 指定子元素

    const element = (
    	<div>
    		<h1>Hello!</h1>
    		<h2>Good to see you here.<h2>
    	</div>
    )
    

    6 JSX 防止注入攻击

    • ReactDOM 在渲染前会进行转义,有效防止 XSS 攻击
    const title = res.pot
    // 直接使用是安全的
    const element = <h1>{ title }</h1>
    

    7 JSX 表示对象

    • Babel 会将 JSX 转译成一个名为 React.createElement() 函数调用
    const element = (
    	<h1 className="greeting">
    		Hello, world!
    	</h1>
    )
    // 相当于
    const element = React.createElement(
    	'h1',
    	{className: 'greeting'},
    	'Hello, world!'
    )
    
    • React.createElement() 会预先进行代码检查
    // 简化版
    const element = React.createElement(
    	type: 'h1',
    	props: {
    		className: 'greeting',
    		children: 'Hello, world!'
    	}
    )
    
  • 相关阅读:
    jstree 实现异步加载子节点
    创建 widget 窗口小组件
    Android(permission)常用权限
    Android 之 补间动画
    补间动画之 AlphaAnimation
    (转)向对象开发与面向组件开发的区别
    Android Drawable文件夹对应像素密度
    Notification(通知) 简单用法
    AlarmManager 用法
    关于IntentService 用法
  • 原文地址:https://www.cnblogs.com/pleaseAnswer/p/15329460.html
Copyright © 2011-2022 走看看