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'))





相关文章
|
4月前
|
存储 JavaScript 算法
React聚焦渲染速度
React聚焦渲染速度
21 0
|
6天前
|
数据采集 资源调度 前端开发
React的服务器端渲染:使用ReactDOMServer进行高效页面预渲染
【4月更文挑战第25天】使用ReactDOMServer,React支持服务器端渲染以实现高效预渲染。通过在Node.js环境中将React组件转化为HTML字符串,减少客户端JavaScript负载和渲染时间。优点包括更快首屏加载、改善SEO和兼容无JavaScript环境,但也会增加服务器负载、复杂性和状态管理挑战。开发者需根据项目需求平衡SSR和CSR。
|
5月前
|
前端开发 UED 开发者
react路由懒加载lazy直接使用组件标签引发的问题?
react路由懒加载lazy直接使用组件标签引发的问题?
117 0
|
2月前
|
前端开发
React动态标签名称
React动态标签名称
22 0
|
3月前
|
前端开发 JavaScript
React渲染性能的优化
React渲染性能的优化
27 2
|
3月前
|
前端开发 JavaScript 安全
react如何渲染包含html标签元素的字符串
react如何渲染包含html标签元素的字符串
59 0
|
3月前
|
前端开发 JavaScript 安全
react 如何return script 标签和内容
在React中,你不能直接返回一个`<script>`标签,因为React会尝试解析并渲染所有的子节点,而`<script>`标签的内容通常会被视为JavaScript代码,而不是要渲染的文本。 但是,如果你只是想在React组件中嵌入一些JavaScript代码,你可以使用`dangerouslySetInnerHTML`属性。这个属性允许你插入原始的HTML内容,但是它非常危险,因为它会执行其中的任何JavaScript代码。因此,只有在你完全信任该内容,并且知道它是安全的情况下,才应该使用这个属性。 以下是一个示例,它创建了一个包含JavaScript代码的`<script>`标签:
|
4月前
|
前端开发
React 中条件渲染的 N 种方法
React 中条件渲染的 N 种方法
18 3
|
4月前
|
前端开发 JavaScript
react的render什么时候渲染?
react的render什么时候渲染?
19 0
|
4月前
|
缓存 前端开发 JavaScript
第二十八章 React脚手架配置代理
第二十八章 React脚手架配置代理