美文网首页
基础:用class和hook实现一个计时器

基础:用class和hook实现一个计时器

作者: skoll | 来源:发表于2020-06-10 21:14 被阅读0次

class模式

class Clock extends React.Component{
  constructor(props){
    super(props)
    this.state={date:new Date()}

    this.handleClick=this.handleClick.bind(this)
  }
  componentDidMount(){
    this.timerID=setInterval(()=>{
      this.tick()
    },1000)
  }
  componentWillUnmount(){
     clearInterval(this.timerID)
  }
  render(){
    return (
      <div>
        <h1 onClick={this.handleClick.bind("libateer",this)}>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }

  tick(){
    this.setState({
      date:new Date()
    })
  }
  handleClick(name,e){
    clearInterval(this.timerID)
  }
}

hook模式

import React ,{useState , useEffect} from "react"
import axios from 'axios'

function Example(props){

    const [name,setName]=useState(props.name)
    const [time,setTime]=useState(new Date().toLocaleString())
    // 当你需要在组件里面添加state,就可以使用hook了
    // 1. 这里只是执行了初始化的state,如果props发生变化怎么操作。。
    
    // effect:里面的函数一定会在dom渲染之后才执行

   
    // 类似生命周期的函数
    useEffect(() => {
        console.log(name)
        // 在这个里面执行副作用操作
        // 数据获取,设置订阅,手动修改react组件的dom
    }, [name]);

    // 需要清除的
    useEffect(() => {
        let timer=setInterval(()=>{
            setTime(new Date().toLocaleString())
        })
        return () => {
            clearInterval(timer)
        };
    });


    // 不需要清除的,执行完毕之后就不需要在去管他了
    // 我们想要在更新dom之后做一些额外的操作。发送一个网络请求.
    useEffect(() => {
        axios.get('http://127.0.0.1:5000/test').then((e)=>{
            console.log(e)
            setName(e.data)
        })
    });
    return (
        <>
            <button onClick={()=>setName("nb")}>
                click me{name}-{props.name}
            </button>
    <span>{time}</span>

        </>
    )
}
export default Example

相关文章

  • 基础:用class和hook实现一个计时器

    class模式 hook模式

  • React Hook useState复杂数据更新机制踩坑

    这里主要用Hook来讲述和做示范(大部分人应该已经全面拥抱Hook了吧)。class组件用setState更新st...

  • IMF-hook.py

    定义了三个类和一个函数这个.py作用在于生成hook的文件 class Hooker: class ApiHook...

  • 调试iPhone越狱手机app

    调试可以用 Monkeydev (可调试 hook 、class-dump头文件、重签名等) CrackerXI、...

  • Logos 语法

    Logos 语法 %hook className 指定需要hook的class,必须以end结尾 如:hook了系...

  • Logos语法

    %hook --字面意思为 勾住指定需要hook的class,必须以%end结尾,如: %hook Spring...

  • tweak

    // Tweak.xm 1.预处理指令 %hook 指定需要hook的class,必须以%end结尾 %hook ...

  • Logos基本语法

    %hook 指定需要hook的class,必须以%end结尾。例: %log 在%hook内部使用,将函数的类名、...

  • Logos语法

    %hook 指定需要hook的class,必须以%end结尾。 %log 该指令在%hook内部使用,将函数的类名...

  • 计时器 hook

网友评论

      本文标题:基础:用class和hook实现一个计时器

      本文链接:https://www.haomeiwen.com/subject/ptlmtktx.html