React入门之React_渲染基础用法和class实例写法

渲染元素

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>04元素渲染</title>
    <script src="https://cdn.jsdelivr.net/npm/react@17/umd/react.development.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/react-dom@17/umd/react-dom.development.js"></script>
    <!-- 用于解析babel -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>
<body>
    <div id="root1"></div>
    <script type="text/babel">
        function tick(){
            let time = new Date().toLocaleTimeString()
            var template = <div>
                    <h1>hello fxt</h1>
                    <p>现在是:{time}</p>
                </div>
            ReactDOM.render(template,document.getElementById('root1'))
        }
        // tick()
        //定时器
        setInterval(tick,1000)
    </script>
</body>

</html>

条件判断

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>05条件判断之三目</title>
    <script src="https://cdn.jsdelivr.net/npm/react@17/umd/react.development.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/react-dom@17/umd/react-dom.development.js"></script>
    <!-- 用于解析babel -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>
<body>
    <!--三目式 -->
    <div id="root1">
    </div>
    <script type="text/babel">
        let flag=false
        let login=<div><h1>登录</h1></div>
        let logout=<div><h1>登出</h1></div>
        ReactDOM.render(flag? logout:login,document.getElementById('root1'))
    </script>
    <!--函数式组件写法 开头字母大写 -->
    <div id="root2">
    </div>
    <script type="text/babel">
        function App() {
            let flag=true
            let login=<div><h1>登录</h1></div>
            let logout=<div><h1>登出</h1></div>
            return flag? logout:login
        }
        ReactDOM.render(<App/>,document.getElementById('root2'))
    </script>
    <!-- if/else -->
    <div id="root3">
    </div>
    <script type="text/babel">
        function App() {
            let state=false
            if(state){
                return <div><h1>登出</h1></div>
            }else{

            } return <div><h1>登录</h1></div>
        }
        ReactDOM.render(<App/>,document.getElementById('root3'))
    </script>
</body>

</html>

class类

1.实例写法

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>06class</title>
    <script src="https://cdn.jsdelivr.net/npm/react@17/umd/react.development.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/react-dom@17/umd/react-dom.development.js"></script>
    <!-- 用于解析babel -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>
<body>
    <script>
        //生成实例对象的传统方法是通过构造函数
        function Person(x,y){
            this.x=x
            this.y=y
        }
        Person.prototype.add=function(){
            console.log(this.x+this.y)
        }
        this.p=new Person(1,2).add()
        
        //上面的代码改写成es6的class
        class Persons {
            //必须有,创建实例的时候会默认创建这个方法以及调用
            constructor(x,y){
                this.x=x
                this.y=y
            }
            add (){
                console.log(this.x+this.y)
            }
        }
        const sss = new Persons(5,6).add();
        //构造函数的prototype属性,在es6上面继续存在,实际上类所有的方法都定义在我们的proptotype上
        class Persons{
            constructor(){}
            add(){}
        }
        //等同于上面
        Persons.prototype={
            constructor(){},
            add(){}
        }
    </script>
</body>

</html>

2.类定义

javascript 复制代码
 //
class B{}
let b=new B()
// B.prototype.constructor === b.constructor  true b是B的实例,它的constructor就是B类原型的constructor
        
//定义类,跟es5一样实例的属性他除非显示定义在其本身(this)
// 否则都是定义在原型(class)上的
class Hello{
     constructor(x,y){
         this.x=x
          // 将实例上的方法或者变量定义在自身this
          // this.add=this.add.bind(this)
          // hello.hasOwnProperty('add') true
          // hello.__proto__.hasOwnProperty('add') true 判断是否定义在类上
       }
       add(){
          console.log(this.x)
       }
}
let hello=new Hello(2)
hello.add()
//hasOwnProperty指向自身属性中是否具有指定属性
// hello.hasOwnProperty('x') true 定义在本身this上的
// hello.hasOwnProperty('y') false 定义在class实例上
相关推荐
鬼手点金4 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
蛋蛋的就会顺顺的5 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday5 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室5 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan6 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床6 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a7 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台7 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li8 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
屏什么录8 小时前
电脑如何录屏幕视频和声音?从工具到代码,7 种方案帮你彻底搞定
前端·音视频开发