import ReactDom from 'react-dom'
const Com1 =
const app = (
函数式组件
)
ReactDom.render(app, document.getElementById('root'))
// eslint-disable-next-line no-use-before-define
import React from 'react'
import ReactDom from 'react-dom'
// 类里面不能有逗号
// 如果用到了constructor就要写super(),是用来初始化this的,可以绑定事件到this上,
class Com1 extends React.Component {
constructor () {
super()
this.state = {
num: 1000
}
}
state = {
num: 1000
}
render () {
const { num } = this.state
return (
class创建组件
num的值是:{num}
)
}
}
const app = (
class创建组件
)
ReactDom.render(app, document.getElementById('root'))
什么是状态
状态定义:是用来描述事物在
某一时刻的形态
的数据。一般称为state。例如:9月23号时书的库存数量; 18岁时人的身高;有状态组件与无状态组件
能定义state的组件 类组件就叫有状态组件
不能够定义state的组件 函数组件 就叫无状态组件
注意:2019年02月06日,rect 16.8中引入了 React Hooks,从而函数式组件也能定义自己的状态了
class Com1 extends Component {
constructor () {
super()
this.state = {
num: 100
}
}
hClick= (e) =>{
// alert(1)
console.log('hClick', this)
}
hClick2 = () => {}
render () {
const id = 1
console.log('render', this)
return (
事件绑定
)
}
}
react核心理念之状态不可变
需要修改state中的状态 需要通过setState来修改状态
class Com1 extends Component {
constructor () {
super()
this.state = {
num: 100
}
}
hClick= (e) =>{
// alert(1)
console.log('hClick', this)
this.setState({ //修改state中的值使用setState
num:10000
})
}
hClick2 = () => {}
render () {
const id = 1
console.log('render', this)
return (
事件绑定
)
}
}
分四步:
// 1.导入createRef 方法
import { Component, createRef } from 'react'
import ReactDOM from 'react-dom'
class HelloReact extends Component {
// 2.调用createRef方法调用引用
inputRef = createRef()
state = {
name: 'jack'
}
hClick = () => {
// 4.通过current.value来获取当前dom元素
console.log(this.inputRef.current.value)
}
render () {
return (
{/* 3.给表单绑定ref的值 */}
)
}
}
const app = (
app
{/* 2.使用组件 */}
)
ReactDOM.render(app, document.getElementById('root'))
基本步骤
2.1绑定value属性与表单关联
2.2 绑定onChange事件 并在回调中通过setState来修改状态值
import { Component } from 'react'
import ReactDOM from 'react-dom'
class HelloReact extends Component {
inputRef = createRef()
// 1.state定义
state = {
content: ''
}
hClick = (e) => {
// 3.通过事件对象进行赋值 e.target.value可以拿到表单的值
this.setState({
content: e.target.value
})
}
render () {
return (
{/* 2.value值进行绑定 并绑定onChange事件 */}
)
}
}
const app = (
app
)
ReactDOM.render(app, document.getElementById('root'))
文本框、文本域、下拉框:value属性 + onChange事件
复选框: checked属性 + onChange事件
单选按钮组:checked属性 + onChange事件
代码如下
import React from 'react'
import ReactDOM from 'react-dom'
class App extends React.Component {
state = {
username: '',
desc: '',
city: '2',
isSingle: true,
gender: '男'
}
handleName = (e) => {
this.setState({
username: e.target.value
})
}
handleDesc = (e) => {
this.setState({
desc: e.target.value
})
}
handleCity = (e) => {
this.setState({
city: e.target.value
})
}
handleSingle = (e) => {
this.setState({
isSingle: e.target.checked
})
}
hGender = (e) => {
this.setState({
gender: e.target.value
})
}
render () {
return (
姓名:
描述:
城市:
是否单身:
{' '}
男
{' '}
女
)
}
}
ReactDOM.render( , document.getElementById('root'))