学习react

news/2023/6/9 18:46:29

这里写自定义目录标题

  • 学习React

学习React

安装react的脚手架

npm i create-react-app -g

通过脚手架创建demo

D:\dev_project>create-react-app react-demo
You are running Node 11.1.0.
Create React App requires Node 14 or higher.
Please update your version of Node.

说我的node版本太低了,重新换一个node版本,我的node版本是通过nvm控制的,nvm的版本是1.1.7

升级node到18.2.0的版本

安装脚手架

C:\Windows\system32>npm i create-react-app -g
npm ERR! Unexpected token '.'

查了一下资料,别人说是nvm的版本太低导致的问题,我重新安装了一下nvm到1.1.10的版本。

重新安装了nvm,升级到1.1.10的版本,再安装就没问题了。

D:\dev_project>create-react-app react-demoCreating a new React app in D:\dev_project\react-demo.Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...added 1416 packages in 1mInitialized a git repository.Installing template dependencies using npm...added 54 packages in 7s
Removing template package using npm...removed 1 package in 3sCreated git commit.Success! Created react-demo at D:\dev_project\react-demo
Inside that directory, you can run several commands:npm startStarts the development server.npm run buildBundles the app into static files for production.npm testStarts the test runner.npm run ejectRemoves this tool and copies build dependencies, configuration filesand scripts into the app directory. If you do this, you can’t go back!We suggest that you begin by typing:cd react-demonpm startHappy hacking!

执行npm start
能看到这样一个页面
在这里插入图片描述

把src文件夹内的文件全部删除
自己新建一个index.js

import React from 'react'
import ReactDom from 'react-dom'const element = React.createElement('h1',{id:'el'},'Hello React');ReactDom.render(element,document.getElementById('root'))

从上面的代码我们能看到我们使用react创建了h1标签元素。

我们再学习创建几个元素:

<div class="list"><h1>水果</h1><ul><li>苹果</li><li>橘子</li></ul>
</div>

写出来的代码如下:

import React from 'react'
import ReactDom from 'react-dom'const element = React.createElement('div',{className:'list'},[React.createElement('h1',null,'水果'),React.createElement('ul',null,[React.createElement('li',null,'苹果'),React.createElement('li',null,'橘子'),]),]);ReactDom.render(element,document.getElementById('root'))

得到页面
在这里插入图片描述
这种方式写代码太复杂了,看看有没有简单的方法。

import React from 'react'
import ReactDom from 'react-dom'const name = 'Jack'const element = <h1>Hello, {name}</h1>ReactDom.render(element,document.getElementById('root'))

得到页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function combineName(person){return person.firstName + ' ' + person.lastName;
}
const Jack_Ma = {firstName: 'Jack',lastName:'Ma',
}
const name = 'Jack'
const element = (<h1>Hello,{combineName(Jack_Ma)}</h1>)
ReactDom.render(element,document.getElementById('root'))

页面
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function combineName(person){return person.firstName + ' ' + person.lastName;
}function getGreeting(person){if(person){return <h1>Hello, {combineName(Jack_Ma)}</h1>}else{return <h1>Hello,Strange</h1>}
}const Jack_Ma = {firstName: 'Jack',lastName:'Ma',
}const Tony = nullconst name = 'Jack'const element = getGreeting(Jack_Ma)const element2 = getGreeting(Tony)ReactDom.render([element,element2],document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function tick(){const element = (<div><h1>Hello, Jack</h1><h2>It is {new Date().toLocaleTimeString()}.</h2></div>);ReactDom.render(element,document.getElementById('root'))
}
setInterval(tick,1000);

页面
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function Welcome(props){return <h1>Hello,{props.name}</h1>
}const element = <Welcome name="Jack"></Welcome>;ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'
class Welcome extends React.Component{render(){return <h1>Hello,{this.props.name}</h1>;}
}
const element = <Welcome name="Jack1"></Welcome>;
ReactDom.render(element,document.getElementById('root'))

页面
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'class Welcome extends React.Component{render(){return <h1>Hello,{this.props.name}</h1>;}
}function App(){return (<div><Welcome name="JAck1"></Welcome><Welcome name="JAck2"></Welcome><Welcome name="JAck3"></Welcome></div>)
}
const element = App();
ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'class Welcome extends React.Component{render(){return <h1>Hello,{this.props.name}</h1>;}
}class App extends React.Component{render(){return (<div><Welcome name="Jack1"></Welcome><Welcome name="Jack2"></Welcome><Welcome name="Jack3"></Welcome><Welcome name="Jack4"></Welcome></div>)}
}
const element = <App></App>;ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'class Clock extends React.Component {constructor(props){super(props);this.state = {date:new Date()}}componentDidMount(){this.timerID=setInterval(()=>this.tick(),1000)}componentWillUnmount(){clearInterval(this.timerID);}tick(){this.setState({date:new Date()})}render(){return (<div><h1>Hello,world!</h1><h1>It is {this.state.date.toLocaleTimeString()}.</h1></div>)}
}
const element = <Clock></Clock>
ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'class Clock extends React.Component {constructor(props){super(props);this.state = {date:new Date()}}componentDidMount(){this.timerID=setInterval(()=>this.tick(),1000)}componentWillUnmount(){clearInterval(this.timerID);}tick(){this.setState({date:new Date()})}render(){return (<div><h1>Hello,world!</h1><h1>It is {this.state.date.toLocaleTimeString()}.</h1></div>)}
}function App(){return (<div><Clock></Clock><Clock></Clock><Clock></Clock></div>)
}
const element = App();
ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'class Toggle extends React.Component {constructor(props){super(props)this.state = {isToggleOn:true}this.handleClick = this.handleClick.bind(this);}handleClick(){this.setState(state =>({isToggleOn:!state.isToggleOn}));}render(){return (<button onClick={this.handleClick}>{this.state.isToggleOn?'ON':'OFF'}</button>)}
}
const element = <Toggle></Toggle>;
ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述
点击后:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function WarningBanner(props){if(!props.warn){return null;}return (<div className='warning'>Warning!</div>)
}class Page extends React.Component {constructor(props){super(props);this.state = {showWarning:true};this.handleToggleClick = this.handleToggleClick.bind(this)}handleToggleClick(){this.setState(state =>({showWarning:!state.showWarning}));}render(){return (<div><WarningBanner warn={this.state.showWarning}></WarningBanner><button onClick={this.handleToggleClick}>{this.state.showWarning?'Hide' : 'Show'}</button></div>)}
}
const element = <Page></Page>;
ReactDom.render(element,document.getElementById('root'))

在这里插入图片描述
代码:

import React from 'react'
import ReactDom from 'react-dom'
const numbers = [1,2,3,4,5];
const listItems = numbers.map((number)=>
<li>{number}</li>)
const element = <ul>{listItems}</ul>;
ReactDom.render(element,document.getElementById('root'))

页面:
在这里插入图片描述

代码:

import React from 'react'
import ReactDom from 'react-dom'function NumberList(props){const numbers = props.numbers;const listItems = numbers.map((number)=><li key={number.toString()}>{number}</li>);return (<ul>{listItems}</ul>);
}
const numbers = [1,2,3,4,5,6];
const element = <NumberList numbers={numbers}></NumberList>;
ReactDom.render(element,document.getElementById('root'))

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4565242.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

与Oracle不一样的union

与Oracle不一样的union一、引言二、实验探寻union2.1 再现DM8案例2.2 再现Oracle案例2.3 实验结论一、引言 前三日&#xff0c;同事call我聊发文查询优化排序问题&#xff0c;当时联想到union自身的特性&#xff08;合并去重&#xff0c;默认排序输出结果集&#xff09;&#…

怎么去除微博图片的水印?

最近发现了一款很不错的去水印的软件&#xff0c;不是裁剪水印&#xff0c;而是真正的获取上传的无水印原图。 发现超级好用&#xff0c;下载的都是清晰还没有水印的图片。 下载之后就是这样的 微博真正去水印视频图片下载_哔哩哔哩_bilibili​www.bilibili.com 方法在上面的…

怎么去掉微博图片中的水印,照片水印怎么去

微博是全民都在参与的一个APP&#xff0c;可以关注很多明星的实时动态&#xff0c;特别是对于女生来说&#xff0c;尤其是在关注自己爱豆的时候&#xff0c;会将爱豆发的每张图片都保存下来&#xff0c;小编就是这样的一个称职的粉丝&#xff0c;但是我们会发现微博中发布的图片…

用 Jupyter Notebook 爬取微博图片保存本地!

今天咱们用 Jupyter-Notebook 并结合框架&#xff08;Selenium&#xff09;模拟浏览器抓取微博图片并将图片保存本地。 Selenium 是一个用电脑模拟人的操作浏览器网页&#xff0c;可以实现自动化测试&#xff0c;模拟浏览器抓取数据等工作。 环境部署 安装 Jupyter notebook…

微博图片浏览器

微博图片浏览器 cell 有一个imageURL var imageURL: URL? { didSet{// 1.重置属性reset()// 2.显示菊花activity.startAnimating()// 3.设置图片iconView.sd_setImage(with: imageURL) { (image, _, _, _) -> Void in// 4.隐藏菊花self.activity.stopAnimating()// 5.调整…

微博动态图片爬取

微博动态图片爬取 由于微博的网页端有反爬虫&#xff0c;需要登录&#xff0c;所以我们换个思路&#xff0c;曲线救国。 我们找到微博在浏览器上面用于手机端的调试的APL&#xff0c;如何找到呢&#xff1f; 我这边直接附上微博的手机端的地址&#xff1a; https://m.weibo.c…

python + opencv微博图片去水印

python 3.6.5openCV 4.0.1 基本思路&#xff1a; 提取ROI(感兴趣的区域&#xff0c;即水印所在的区域)为水印创建蒙层借助水印蒙层对图片进行修补 **提取ROI&#xff1a;**获取水印在图片中所在的区域&#xff0c;即像素值范围。可以有很多工具获得&#xff0c;我使用的是win…

在Azure应用程序按指定时区的时间来输出日志(NLog)

部署在Azure应用程序使用NLog组件进行日志输出&#xff0c;如购买的Azure云是国际版&#xff08;非中国版Azure&#xff09;&#xff0c;默认使用国标时间&#xff08;即&#xff1a;UTC&#xff09;来输出日志时间&#xff0c;与中国地区的时间相差8小时&#xff08;即&#x…