Hi,我是赵猛,今天整理一下React学习中的一些笔记。
react是一个用于构建用户界面的JavaScript库
下面是react的官方网址:
react官网:https://reactjs.org/
react中文网:https://zh-hans.reactjs.org/
你只需要描述UI(HTML)看起来是什么样的,就跟写HTML一样
const jsx = <div className="app">
<h1>Hello React! 动态数据变化:{count}</h1>
</div>
声明式对应的是命令式,声明式关注的是what,命令式关注的是how
npx create-react-app react-basic
create-react-app
是 React 脚手架的名称yarn start
or npm start
src
目录是我们写代码进行项目开发的目录package.json
两个核心库:react
、react-dom
(脚手架已经帮我们安装好,我们直接用即可)- 导入react和react-dom
- 创建react元素(虚拟DOM)
- 渲染react元素到页面中
// 导入react和react-dom
import React from 'react'
import ReactDOM from 'react-dom'
// 创建元素
const title = React.createElement('h1', null, 'hello react')
// 渲染react元素
ReactDOM.render(title, document.getElementById('root'))
yarn global add create-react-app
JSX
是JavaScript XML
的简写,表示了在Javascript代码中写XML(HTML)格式的代码
优势:声明式语法更加直观,与HTML结构相同,降低学习成本,提高开发效率。
注意:JSX 不是标准的 JS 语法,是 JS 的语法扩展。脚手架中内置的 @babel/plugin-transform-react-jsx 包,用来解析该语法。
- 导入react和reactDOM包
- 使用jsx语法创建react元素
- 把react元素渲染到页面中
// 导入react和react-dom
import React from 'react'
import ReactDOM from 'react-dom'
// 创建元素
const title = <h1 title="哈哈"></h1>
// 渲染元素
ReactDOM.render(title, document.getElementById('root'))
// 保存到额时候用使用prettier进行格式化
"editor.formatOnSave": true,
// 不要有分号
"prettier.semi": false,
// 使用单引号
"prettier.singleQuote": true,
// 默认使用prittier作为格式化工具
"editor.defaultFormatter": "esbenp.prettier-vscode",
在jsx中可以在{}来使用js表达式
const name = 'zs'
const age = 18
const title = (
<h1>
姓名:{name}, 年龄:{age}
</h1>
)
const car = {
brand: '玛莎拉蒂'
}
const title = (
<h1>
汽车:{car.brand}
</h1>
)
const friends = ['张三', '李四']
const title = (
<h1>
汽车:{friends[1]}
</h1>
)
const gender = 18
const title = (
<h1>
性别:{age >= 18? '是':'否'}
</h1>
)
function sayHi() {
return '你好'
}
const title = <h1>姓名:{sayHi()}</h1>
const span = <span>我是一个span</span>
const title = <h1>盒子{span}</h1>
{/* 这是jsx中的注释 */} 推荐快键键 ctrl + /
我们经常需要遍历一个数组来重复渲染一段结构
在react中,通过map方法进行列表的渲染
const songs = ['温柔', '倔强', '私奔到月球']
const list = songs.map(song => <li>{song}</li>)
const dv = (
<div>
<ul>{list}</ul>
</div>
)
const dv = (
<div>
<ul>{songs.map(song => <li>{song}</li>)}</ul>
</div>
)
{songs.map(song => (
- {song}
))}
)
注意:列表渲染时应该给重复渲染的元素添加key属性,key属性的值要保证唯一
注意:key值避免使用index下标,因为下标会发生改变
const dv = (
<div style={{ color: 'red', backgroundColor: 'pink' }}>style样式</div>
)
// 导入样式
import './base.css'
const dv = <div className="title">style样式</div>
.title {
text-align: center;
color: red;
background-color: pink;
}