大家好,我是大帅子,我最近在学习react,刚学了两天,往后每一天给大家介绍一下基础的语法吧,本人也是刚学,有什么问题欢迎大家提出一起学习那我们从最基础的讲起吧,我们直接跳过react的介绍,直接讲语法
1.react的特点就是跟写html一样
<div className="app">
<h1>Hello React! 动态数据变化:{count}</h1>
</div>
2.接下我们可以先创建一个react项目玩一下
我们直接通过npm来创建
npx create-react-app your-project-name
1. npx create-react-app 是固定命令,`create-react-app` 是 React 脚手架的名称
2. your-project-name 表示项目名称,可以修改
3.项目启动是 npm start
这里就不给大家介绍文件夹里的各个文件是干嘛的了
3.书写规范
react的书写规范是通过jsx(JavaScript XML)
1.jsx就是在js里面书写html
2.示范给大家放在下面
// 导入react和react-dom
import React from 'react'
import ReactDOM from 'react-dom'
// jsx创建元素
const list = <ul><li>html</li><li>js</li><li>css</li><ul>
// 渲染react元素
ReactDOM.render(list, document.getElementById('root'))
4.react组件的创建方式
组件分为类组件,跟函数式组件,声明方式如下:
1.函数式组件的声明要注意以下的几点
(1)函数名首字符大写
(2)必须有返回值
import React from 'react'
import ReactDOM from 'react-dom'
const title = <h1>react的两种组件</h1>
// 定义一个函数式组件
const Com1 = () => {
return <div>第一个函数式组件</div>
}
// 定义一个类组件
class Com2 extends React.Component {
render () {
return <div>第一个类组件</div>
}
}
const content = (
<div>
{title}
<Com1 />
<hr />
<Com2 />
</div>
)
ReactDOM.render(content, document.getElementById('root'))
5.使用 ES6 的 class 创建的组件,叫做类(class)组件
注意点:
- 类名必须以大写字母开头
- extends是一个关键字,用来实现类之间的继承。类组件应该继承 React.Component 父类,从而使用父类中提供的方法或属性。
- 类组件必须提供 render 方法,render 方法必须有返回值,表示该组件的 UI 结构。render会在组件创建时执行一次
// import { Component } from 'react'
// class 类名 extends Component {
import React form 'react'
class 类名 extends React.Component {
// ...
render () {
return 本组件的UI结构
}
}
6. 有状态组件和无状态组件
有状态组件:能定义state的组件。类组件就是有状态组件。
无状态组件:不能定义state的组件。函数组件又叫做无状态组件
7.定义状态
有两种等价的格式:
state = 对象- 在构造函数中用
this.state= 对象来做初始化
import React from "react";
export default class Hello extends React.Component {
// 1. 方式1 state就是状态
state = {
list: [{ id: 1, name: "明天会更好" },{ id: 2, name: "难忘今宵" }],
isLoading: true
};
// 2. 方式2 构造函数
constructor() {
super() // 在构造函数内部使用this,必须提前调用super
this.state = {
list: [{ id: 1, name: "明天会更好" },{ id: 2, name: "难忘今宵" }],
isLoading: true
}
}
8.事件绑定
注意 :React 事件名采用驼峰命名法,比如:onMouseEnter、onFocus、 onClick ......
<元素 事件名1={ 事件处理函数1 } 事件名2={ 事件处理函数2 } ></元素>
9. setState的典型用法
setState 是修改state里面的数据的,这个切记不能忘
// 无效修改
this.state.count = 100
//有效修改
this.setState({
count: this.state.count++
})
9.非受控组件-ref
步骤
- 导入方法。
import { createRef } from 'react' - 调用createRef方法创建引用,假设名为refDom。
const refDom = createRef() - refDom设置给表单元素的ref属性。
<input ref={refDom}/> - 通过refDom.current.value来获取值。
console.log(this.refDom.current.value)
内容
- 受控组件是通过 React 组件的状态来控制表单元素的值
- 非受控组件是通过手动操作 DOM 的方式来控制
- 此时,需要用到一个新的概念:ref
- ref:用来在 React 中获取 DOM 元素
示例代码
// 1. 导入方法
import { createRef } from 'react'
class Hello extends Component {
// 2. 调用createRef方法创建引用
txtRef = createRef()
handleClick = () => {
// 4. 通过.current.value来获取值
console.log(this.txtRef.current.value)
}
render() {
return (
<div>
<h1>如何获取input中的值-非受控组件-ref</h1>
{/* 3. 设置给表单元素的ref属性 */}
<p><input type="text" ref={this.txtRef}/></p>
<button onClick={handleClick}>获取文本框的值</button>
<div>
)
}
}
今天就讲这么多,很杂有点乱,我也是刚学这个,有什么问题欢迎提问,我会在看到的第一时间回答的😊