React笔记 (函数组件&类组件)

什么是组件
  • 能跟其他物件 合起来的物 ,就是组件
  • 组件并没有明确的定义,靠感觉理解 就行
  • 就目前而言,一个返回 React 元素的 函数 就是组件
  • Vue 里,一个 构造选项 就可以表示一个组件
一、函数组件
const welcome = () => {
  return (
    

Hello,fang

) } 使用方法:

上面代码是函数组件的基本写法

添加props(外部数据)
const welcome = ( props ) => {
  return (
    

Hello,{ props.name }

) } 使用方法:

上面代码传入 props 为外部数据,直接读取参数
props.name 来获取外部传入的数据。

添加state(内部数据)
const welcome = ( props ) => {
  const [ n, setN ] = React.useState(0)
  return (
    

Hello,{ props.name }

{ n } ) } 使用方法:

useState 返回数组,第一项读,第二项写
[n, setN] 这个数组的第一项是用来 读取 数据,第二项则是用来 改写 数据,当我们调用 setN 时是不会改变 n 的,只会产生一个新的 n

函数组件注意事项

  • 类组件的 this.setState 会等一会改变,而函数组件的 setN 是永远不会改变,只会重新产生一个新的
  • 跟类组件类似的地方:
    也要通过 setX(新值) 来更新 UI
  • 跟类组件不同的地方:
    没有 this ,一律用参数和变量
一、类组件
class Welcome extends React.Component{
  constructor(){
    super()
    this.state={}
  }
  render(){
    return(
      

Hello,fang

) } } export default Welcome 使用方法:

上面代码是类组件的基本写法

添加props(外部数据)
class Welcome extends React.Component{
  constructor(){
    super()
    this.state={}
  }
  render(){
    return(
      

Hello,{ this.props.name }

) } } export default Welcome 使用方法:

上面代码直接读取属性 this.props.name 来获取外部传入的数据。

添加state(内部数据)
class Welcome extends React.Component {
  constructor() {
    super()
    this.state = {
      n: 0
    }
  }
  add() {
    this.setState({
      n: this.state.n + 1
    })
  }
  render() {
    return (
      

Hello,{this.props.name}

{n}
) } } export default Welcome 使用方法:

上面代码 this.state 读取数据,this.setState 改写数据

类组件注意事项

  • this.state.n += 1 无效?
    其实 n 已经改变了,只不过 UI 不会自动更新,调用 setState 才会触发 UI 更新(异步更新),因为 React 没有像 Vue 监听 data 一样监听 state
  • setState 会异步更新 UI
    setState 之后,state 不会马上改变,立马读 state 会失败,更推荐的方式是 setState( 函数 )
add(){
  this.setState( state => {
       let n = state.n + 1
        return { n }
     })
}
// 函数式setState写法

  • this.setState(this.state) 不推荐?
    React 希望我们不要修改旧的 state (不可变数据)
    常用代码:
  setState( { n : state.n + 1 } )

注:
这是一种理念(函数式),喜欢就用,不喜欢就用 Vue

你可能感兴趣的:(React笔记 (函数组件&类组件))