React——01安装脚手架以及渲染标签

简介: 安装脚手架以及渲染标签

基本使用

npm i react react-dom

react包核心 提供创建元素、组件等功能

react-dom包提供dom相关功能

脚手架安装

初始化项目命令 npx create-react-app 项目名

npx create-react-app object

创建React元素

const vdom = React.createElement('p',null,'脚手架');

渲染元素

ReactDOM.render(vdom,document.querySelector('#root'));

运行到浏览器

npm start

JSX

JavaScript XML 用js写html

jsx不是标准的es语法,浏览器不能直接识别,可以借助babel这样的工具编译处理

语法

1 不能用引号

2 属性名用驼峰命名法 class->className tabindex->tabIndex for->htmlFor

3 没有子节点的React元素可与使用/>结束

4 jsx语法结构推荐使用小括号包裹起来

函数组件的写法:

function Hello(){
    return (<h1>Hello 函数组件</h1>)
}
ReactDOM.render(<Hello />,document.querySelector('#root'))

1、函数名一定要大写,否则

da854a93f2c84c14b8b666212ef7f7f5.png

d5fc68d191c04f65a4514bc0bdbe0067.png

2、函数必须要有返回值,否则

0a8b0e96fd2745c8a2b4335fc7385817.png

565bdb5de8cd430bb90015b33bddd84b.png

3、返回值为null表示不渲染任何内容

箭头函数写法:

const Hello = ()=>{
    return (<h1>Hello 函数组件</h1>)
}
ReactDOM.render(<Hello />,document.querySelector('#root'))

效果如下

14f46d809a81445387c46df128def59d.png

遍历li标签

import React from "react";
import ReactDOM from "react-dom";
const data = [
    {
        id:1,
        name: 'zs'
    },
    {
        id: 2,
        name: 'lisi'
    },
    {
        id: 3,
        name: 'wangwu'
    }
];
let ul = (
    <ul>
        {data.map(item=> <li className="demo" key={item.id} style={ {color: 'red',backgroundColor: '#00f'} }>{item.name}</li>)}
    </ul>
)
ReactDOM.render(ul,document.querySelector('#root'));

类组件

1、类名称必须首字母大写

2、类组件继承Reaact.Component

3、类组件必须提供render()

4、必须要有返回值

/* 类组件 */
class Hello extends React.Component{
    render(){
        return (<h1>Hello 函数组件!!</h1>)
    }
}
ReactDOM.render(<Hello />,document.querySelector('#root'))
//ReactDOM.render(<Hello></Hello>,document.querySelector('#root'))

88b7c6cd4edb44478126d6d4fdc9ce99.png

组件化写法:

// 创建Hi组件
import React from "react";
class Hi extends React.Component{
    render(){
        return(<h1>Hi,everyone</h1>)
    }
}
// 导出
export default Hi

在index.js中引入

import Hi from "./Hi";
ReactDOM.render(<Hi />,document.querySelector('#root'))

31df6bf0d24943f094845fd385308a7d.png

渲染点击事件

第一种写法 :

import React from "react";
import ReactDOM  from "react-dom";
// 事件绑定
class App extends React.Component{
    render(){ 
        return (<input type="button" onClick={()=>{
            console.log('已经被点击!');
        }} value="按钮"/>)
    }
}
ReactDOM.render(<App></App>,document.querySelector('#root'))

973f34f6ad4f4f6cae944547fea616d5.png

第二种写法:放在原型的实例化上面

import React from "react";
import ReactDOM  from "react-dom";
// 事件绑定
class App extends React.Component{
    handleClick() {
        console.log('已经被点击!');
    }
    render(){ 
        return (<input type="button" onClick={this.handleClick} value="按钮"/>)
    }
}
ReactDOM.render(<App></App>,document.querySelector('#root'))

第三种写法

function App() {
    function handleClick() {
        console.log('我被点击了');
    }
    return (<input type="button" onClick={this.handleClick} value="按钮"/>)
}
ReactDOM.render(<App></App>,document.querySelector('#root'))
import React from "react";
import ReactDOM  from "react-dom";
/* class App extends React.Component{
    constructor() {
        super()
        // 初始化状态
        this.state = {
            num: 0
        }
    }
    render(){
       return (<div>有状态组件</div>)
    }
} */
class App extends React.Component{
    state = {
        num: 100,
    }
    render(){
       return (<div>有状态组件  <button onClick={()=>{
        //    只能通过setState来修改数据
           this.setState({
               num: this.state.num +1
           })
       }}>+1</button>{this.state.num}<button onClick={()=>{
        //    只能通过setState来修改数据
           this.setState({
               num: this.state.num -1
           })
       }}>-1</button></div>)
    }
}
ReactDOM.render(<App/>,document.querySelector('#root'))





相关文章
|
23天前
|
前端开发 JavaScript
React学习之——条件渲染
【10月更文挑战第16天】React 中没有像Vue中v-if这种指令。React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
|
1月前
|
前端开发 JavaScript 容器
React 元素渲染
10月更文挑战第7天
23 1
|
28天前
|
监控 前端开发 UED
在 React 18 中利用并发渲染提高应用性能
【10月更文挑战第12天】利用并发渲染需要综合考虑应用的特点和需求,合理运用相关特性和策略,不断进行优化和调整,以达到最佳的性能提升效果。同时,要密切关注 React 的发展和更新,以便及时利用新的技术和方法来进一步优化应用性能。你还可以结合具体的项目实践来深入理解和掌握这些方法,让应用在 React 18 的并发渲染机制下发挥出更好的性能优势。
104 59
|
2月前
|
前端开发
React | 修改React脚手架的默认端口号?
React | 修改React脚手架的默认端口号?
144 64
|
1月前
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
88 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
19天前
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
21天前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
21天前
|
前端开发 JavaScript UED
react-router 里的 Link 标签和 a 标签有什么区别
`react-router` 中的 `Link` 标签与 HTML 中的 `a` 标签的主要区别在于:`Link` 是专门为 React 应用设计的,用于实现客户端路由导航,不会触发页面的重新加载,而 `a` 标签则会刷新整个页面。使用 `Link` 可以提升应用的性能和用户体验。
|
1月前
|
前端开发 JavaScript 算法
React 渲染优化策略
【10月更文挑战第6天】React 是一个高效的 JavaScript 库,用于构建用户界面。本文从基础概念出发,深入探讨了 React 渲染优化的常见问题及解决方法,包括不必要的渲染、大量子组件的渲染、高频事件处理和大量列表渲染等问题,并提供了代码示例,帮助开发者提升应用性能。
50 6
|
2月前
|
前端开发
react动态生成input、select标签以及思路总结
本文介绍了在React中动态生成input和select标签的方法,包括准备数据结构、在组件挂载时动态添加状态、页面渲染以及输入处理,最后总结了实现思路。
35 1
react动态生成input、select标签以及思路总结