1.  插值表达式: {} 是一对单大括号

2.  和html的属性差异:

class => className
defaultValue => value
checked => defaultChecked
innerHTML => dangerouslySetInnerHTML
for => htmlFor

3. 创建组件的两种方式:

  (1)function      

import React from "react"
export default function No () {
    return <div>
        这里是function创建的组件
    </div>
}

在App.js中引用

(2) class

import React from "react"
export default class Index extends React.Component {
    render() {
        return <div style={{backgroundColor: 'pink'}}>
            <h1>这里是class创建的组件</h1>
        </div>
    }
}

 

 

 4. function和class创建组件的区别:

function是无状态组件,没有私有的state和生命周期函数,适用于只展示的场景,只能接收外面传进去的props,引用时用props.xx,不能使用this,如果需要向其添加一些 state,可以用state Hook解决

class是有状态的组件,具有私有的state和生命周期函数,被大多数人使用,接收外面的props,引用时用this.props

5. 使用props父组件向子组件传值:

<Receive name={'hello react'}>

function接收

function Receive(props) {
  return <div>
  {props.name}  
</div>      
}

class接收

export default class Receive  extends React.Component {  
  render () {
    return <div>{this.props.name}</div>
  } }

6. 事件传值

bind方式: 

 <button type={"button"} onClick={() => this.add('hello world')}>事件传值1</button>

箭头函数方式:

<button type={"button"} onClick={this.edit.bind(this, 'hello world')}>事件传值2</button>

方法:

   add (v) {
        console.log('箭头函数接收的值', v)
    }
    edit (v) {
        console.log('bind方式接收的值', v)
    }

7. state

import React from 'react'
export default class TestState extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            count: 0
        };
    }
    add () {
        this.setState({ count: this.state.count + 1 })
        console.log(this.state.count)
    }
    render() {
        return (
            <div>
                <p>You clicked {this.state.count} times</p>
                <button onClick={() => this.add()}>
                    Click me
                </button>
            </div>
        );
    }
}

 

 

 

可以看到this.state.count 没有实时更新

add () {
        this.setState({ count: this.state.count + 1 }, () => {
            console.log('回调', this.state.count)
        })
        console.log(this.state.count)
  }

 

 

在add()中加了回调函数才会更新

下面用function + state Hook来实现上述class:

import React, { useState } from "react";
export default function SH () {
    let [count, setCount] = useState(0)
    return <div style={{backgroundColor: 'gold'}}>
        { count }
        <div>
            <button type={"button"} onClick={() => setCount(count+1)}>count++</button>
        </div>
    </div>
}

 

 此时可以实时更新

 

 





 posted on 2020-12-11 15:04  Yseraaa  阅读(89)  评论(0编辑  收藏  举报