1、声明式设计
react
采用声明范式,可以轻松描述应用。
2、高效
react
通过对DOM的模拟(虚拟dom),最大限度的减少与DOM的交互。
3、灵活
react
可以与已知的库或框架很好的配合。
4、
jsx
jacascript语法扩展。
5、组件通过
react
构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6、单向响应的数据流,
react
实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
1.2 创建react项目
全局安装
create-reacy-app
npm install -g create-react-app
创建一个项目
create-react-app your-app
(注意命名方式)
这个过程需要等待,实际上会安装三个东西
1、react:react的顶级库
2、react-dom:因为react有很多的运行环境,比如app端端react-native,我们要在web 上运行就使用react-dom
3、react-scripts:包含运行和打包react应用程序的所有脚本及配置
tips:如果不想全局安装,也可直接使用
npx
npx create-react-app your-app
tips: nrm是npm镜像管理工具:
1.3 编写react应用程序
创建完项目后,删除
src
文件夹里面的所有文件:
然后在
src
下新建
index.js
文件:
import React from 'react'
import ReactDOM from 'react-dom'
ReactDOM.render(<div>111</div>, document.getElementById("root"));
二、react组件开发
2.1 class组件
新建文件夹及文件:
base.js
中写入:
import React from 'react';
class App extends React.Component {
render () {
return (
<section>
<div>hello react Component</div>
</section>
export default App;
index.js
中引入:
页面效果:
2.2 函数组件
新建function.js
写入:
function App() {
return (
<section>
<div>hello function Component</div>
</section>
index.js
引入:
react16.8之前函数式组件也叫做无状态组件。16.8之后react hooks就可以让函数式组件有状态了。
2.3 组件嵌套
vscode
安装:
安装完之后,输入rcc
将出现:
在nested.js
中写入:
import React, { Component } from 'react'
class Child extends Component {
render () {
return <li>Child</li>
class Navbar extends Component {
render () {
return (
<ul>Navbar
<Child />
function Swiper() {
return <div>Swiper</div>
const Tabbar = () => <div>Tabbar</div>
export default class Nested extends Component {
render() {
return (
<Navbar></Navbar>
<Swiper></Swiper>
<Tabbar></Tabbar>
</div>
在 index.js
中引入:
2.4 组件样式
在vue
中使用{{}}
双大花括号进行变量替换,js
运算。但在react
中用{}
来进行变量替换,js
运算。
在style.js
写入:
import React, { Component } from 'react'
export default class Style extends Component {
render() {
var myname = 'justin'
var obj = {backgroundColor: 'yellow', fontSize: '30px'}
return (
<section>
{10 + 20} - {myname}
</div>
<div style={obj}>
{10 > 20 ? 'aaa' : 'bbb'}
</div>
</section>
新建css
文件夹新建style.css
:
在index.js
导入index.css
:
style.js
修改成如下:
import React, { Component } from 'react'
import '../css/style.css'
export default class Style extends Component {
render() {
var myname = 'justin'
var obj = {backgroundColor: 'yellow', fontSize: '30px'}
return (
<section>
{10 + 20} - {myname}
</div>
<div style={obj}>
{10 > 20 ? 'aaa' : 'bbb'}
</div>
{/* react推荐我们使用行内样式,因为react认为每一个组件都是一个独立的整体 */}
<div style={{color: 'red', fontSize: '35px'}}>
88888888
</div>
{/* 为了避免与class类关键字冲突,react中使用className表示样式类 */}
<div className="active">
{10 < 20 ? 'aaa' : 'bbb'}
</div>
{/* for是关键字,为了区别js的for关键字,html的label的for属性写成htmlFor */}
<label htmlFor="username">用户名:</label>
<input type="text" id="username"></input>
</section>
在学习的React的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。