react函数式组件及hooks

函数式组件:

注意事项:

(1)函数第一个字母要大写
(2)渲染的时候,得写成标签形式,字母要大写,要有结束符
<script type="text/babel">
      function Demo () {
        return <h2>我是用函数定义的组件</h2>
      }
      ReactDOM.render(<Demo />, document.getElementById('test'))
    </script>

函数式组件也可以操作props

    <script type="text/babel">
        function Demo(props) {

            const { name, age, sex } = props
            return (
                <ul>
                    <li>姓名:{name}</li>
                    <li>年龄:{age}</li>
                    <li>性别:{sex}</li>
                </ul>
            )
        }
        Demo.propTypes = {
            // 限制name必传,且为字符串
            name: PropTypes.string.isRequired,
            // 限制sex为字符串
            sex: PropTypes.string,
            // 限制age为数值
            age: PropTypes.number,
            // 限制speak为函数
            speak: PropTypes.func
        }
        // 指定默认标签属性值
        Demo.defaultProps = {
            sex: '男',
            age: 18
        }
        const p = { name: '老刘', age: 18, sex: '男' }
        ReactDOM.render(<Demo {...p} />, document.getElementById('test'))


    </script>

函数式组件React.useState()的用法:

(1)const [count,setCount] = React.useState(0)

(2)更改state的状态值的两种方式:

1.setCount(value)
2.setCount((value)=>{})
 import React from 'react'
 
 export default function Demo1() {
    //  a将会是一个数组,第一个元素是状态,第二个是更新状态的方法
    // 所以这里使用数组赋值const [] = React.useState()
    // 这是数组的解构赋值
     const [count,setCount] = React.useState(0)
     function add () {
        //  这是第一种写法setCount(value)
        //  setCount(count+1)
        // 这是第二种写法setCount((value)=>{})
        setCount((count)=>{
            return count+1
        })
     }
     return (
         <div>
             <h2>当前求和为:{count}</h2>
             <button onClick={add}></button>
         </div>
     )
 }
 

函数式组件Ref的使用:

import React from 'react'
 export default function Demo1() {
     const myRef = React.useRef()
    //  提示输入的问题
     function show () {
       alert(myRef.current.value)
     }
     return (
         <div>
             <input type="text" ref={myRef}/>
             <h2>当前求和为:{count}</h2>
             <button onClick={add}></button>
             <button onClick={show}>点击我提示数据</button>
         </div>
     )
 } 

函数式组件生命周期React.useEffect():

(1)不写第二个参数----------空数组:

不写第二个参数空数组,这个函数hooks既相当于didmount,又相当于是updatemount,页面一加载会执行,页面一变化谁也不执行

React.useEffect(()=>{
console.log(‘a’)
})

(2)写第二个参数----------空数组:

写了空数组,相当于是组件一挂载的话,会执行一次,但是页面在刷新变化的时候,不会再触发

React.useEffect(()=>{
console.log(‘a’)
},[])

(3)写第二个参数----------数组:

写了数组,相当于是组件一挂载的话,会执行一次,数组中的元素在发生变化的时候,会触发函数执行

React.useEffect(()=>{
console.log(‘a’)
},[count])
import React from 'react'
 export default function Demo1() {
    //  不写第二个参数空数组,这个函数hooks既相当于didmount,又相当于是updatemount,页面一加载会执行,页面一变化谁也不执行
     React.useEffect(()=>{
         console.log('a')
     },[])
    //  a将会是一个数组,第一个元素是状态,第二个是更新状态的方法
    // 所以这里使用数组赋值const [] = React.useState()
    // 这是数组的解构赋值
     const [count,setCount] = React.useState(0)
     function add () {
        //  这是第一种写法setCount(value)
        //  setCount(count+1)
        // 这是第二种写法setCount((value)=>{})
        setCount((count)=>{
            return count+1
        })
     }
     return (
         <div>
             <h2>当前求和为:{count}</h2>
             <button onClick={add}></button>
         </div>
     )
 } 

(4)返回一个函数起到一个在组件卸载前执行,相当于是componentWillUnmount

React.useEffect(()=>{
         console.log('a')
         return ()=>{
             
         }
     },[])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Realistic-er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值