react学习-组件和事件绑定(三)
一、函数组件
// 箭头函数
const Hello = () => {
return (
hello
)
}
// 普通函数
function Hi () {
return (
Hi
)
}
function App () {
return (
)
}
export default App
注:
- 组件的名称必须首字母大写,react内部会根据这个来判断是组件还是普通的 HTML 标签
- 函数组件必须有返回值,表示该组件的 UI 结构;如果不需要渲染任何内容,则返回 null
- 组件就像 HTML 标签一样可以被渲染到页面中。组件表示的是一段结构内容,对于函数组件来说,渲染的内容是函数的返回值就是对应的内容
- 使用函数名称作为组件标签名称,可以成对出现也可以自闭合
二、类组件
import React from "react"
class Hello extends React.Component {
render () {
return (
hello
)
}
}
function App () {
return (
)
}
export default App
注:
- 类名称也必须以大写字母开头
- 类组件应该继承 React.Component 父类,从而使用父类中提供的方法或属性
- 类组件必须提供 render 方法 render 方法必须有返回值,表示该组件的 UI 结构
三、事件绑定
语法
on + 事件名称 = { 事件处理程序 } ,比如:
{}}>注意点
react事件采用驼峰命名法,比如:onMouseEnter、onFocus
例:
import React from "react"
// 函数组件
const Add = () => {
const add = () => {
console.log('函数组件的Add')
}
return (
)
}
// 类组件
class Reduce extends React.Component {
reduce = () => {
console.log('类组件中的reduce')
}
render () {
return (
)
}
}
function App () {
return (
)
}
export default App
传参
获取事件对象
const Hello = () => { const click = (e) => { console.log(e) } return (
hello
) }传递自定义参数
const Hello = () => { const click = (name) => { console.log(name) } return (
click('xxhzm')}>hello
) }传递自定义参数并获取事件对象
const Hello = () => { const click = (e, name) => { console.log(e) } return (
click(e, 'xxhzm')}>hello
) }
四、组件状态
1. 初始化状态
class Counter extends React.Component {
// 初始化状态
state = {
count: 0
}
render() {
return
}
}
2. 读取状态
- 通过this.state来获取状态
class Counter extends React.Component {
// 初始化状态
state = {
count: 0
}
render () {
return (
count{this.state.count}
)
}
}
3. 修改状态
语法
this.setState({ 要修改的部分数据 })
setState方法作用
- 修改state中的数据状态
- 更新UI
思想
数据驱动视图,也就是只要修改数据状态,那么页面就会自动刷新,无需手动操作dom
注意事项
不要直接修改state中的值,必须通过setState方法进行修改
class Counter extends React.Component {
// 定义组件状态
state = {
count: 0
}
countAdd = () => {
this.setState({
count: '10'
})
}
// DOM 结构
render () {
return (
count{this.state.count}
)
}
}
计数器案例
import React from 'react'
class Counter extends React.Component {
// 定义组件状态
state = {
count: 0
}
add = () => {
this.setState({
count: this.state.count + 1
})
}
reduce = () => {
this.setState({
count: this.state.count - 1
})
}
// DOM 结构
render () {
return (
{this.state.count}
)
}
}
function App () {
return (
)
}
export default App
此处评论已关闭