react-ts useState

1、useState-自动推导

场景适合:有明确的初始值

import { useState } from "react"

function App() {

  const [value,setValue] = useState(false)

  const [list,setList] = useState(['111','222'])

  const changeList = ()=>{

    setList(['111','222','2ee'])

  }

  const changeValue = ()=>{

    setValue(false)

  }

  return (

    <>

     this is app{list}

    </>

  )

}

export default App

2、useState-传递泛型参数

useState本身是一个泛型函数,可以传入具体的自定义类型,

如果初始值没有传参,setUser可以传undefined

 import { useState } from "react"

  function App() {

    type User  = {

      name:string,

      age:number

    }

    //1、限制useState的初始值的两种写法

    // const [User,setUser] = useState<User>({

    //   name:'jake',

    //   age:19

    // })

    const [User,setUser] = useState<User>(()=>{

      return {

        name:'zhangsa',

        age:18

      }

    })

    //2、限制setUser的参数必须满足类型的两种写法

    // const changeUser = ()=>{

    //   setUser({

    //     name:'lisi',

    //     age:30

    //   })

    // }

    const changeUser = ()=>{

      setUser(()=>{

        return {

          name:'lisi',

          age:30

        }

      })

    }

    return (

      <>

      this is app {User.age}

      </>

    )

  }

export default App

3、uesState-初始值是null

当不知道状态的初始值是什么,将useState的初始值设为null是一个常见的作法,可以通过具体类型联合null来做显示注解

import { useState } from "react"

  function App() {

    type User  = {

      name:string,

      age:number

    }

    const [user,setUser] = useState<User | null>(null)

    const changeUser = () =>{

      setUser(null)

      setUser({

        name:'zhangsan',

        age:0

      })

    }

    return (

      <>

      {/* 为了类型安全,可选链作为守卫,只有类型不为null(不为空值)的时候才进行点运算 */}

      this is app {user?.age}

      </>

    )

  }

export default App

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值