在上一篇新认识了 Class 物件里面会写一个 local (元件内)的 state 去管理储存元件的值,但这笔资料是存在记忆体里的,并随着元件的产生会进行初始化,消失时已经更新的资料也消失。另外文件也有提到几项要注意的
//错误示范
this.state = {
stuff: "what I want"
}
但因为 state 为框架特定物件格式用来存取 React 元件资料,二来资料要进行更新追踪,进而判断重新 render
的部分,所以需要使用 this.setState 方法进行资料的修改
this.setState 是非同步的
设想元件内部需要去直接修改某资料,并与父层更新值的 props 资料一起更新的情境发生,资料的更新便需要优先次序,而非即时同步的。
在上一篇有提到,setState 里面的更新值不全等於初始设定的所有项目,只会更新有变动的值的部分
this.setState((state, props) => ({
counter: state.counter + props.increment
}));
我们使用了 function component,就需要搭配 Hook 去进行生命周期的处理,而 Hook 是 React 16.8 中增加的新功能。在整个 React 系列後半段会有 Hook 更详尽的学习,现在先练习参照简单的API格式进行改写。
const { useState, useEffect } = React;
function Counter() {
let [count, setCount] = useState(`${new Date().toLocaleTimeString()}`);
useEffect(()=>{
setInterval(()=>{
let timeID = setCount(`${new Date().toLocaleTimeString()}`);
}, 1000)
return ()=>clearInterval(timeID);
}, [])
return <h1>{count}</h1>;
}
ReactDOM.render(
<Counter />,
document.getElementById('root')
);
参考资料:
https://zh-hant.reactjs.org/docs/hooks-effect.html
如何在 Hook 中使用 setInterval
<<: [Day05] Vue i18n - Component Interpolation
先来复习一下~在产出Message前我们会需要什麽东西呢? HashID: [Day 03]取得No...
先看一下以下的程序码,以及用他来编译出来的组合语言 // add.c #include <st...
和牛涮最近很常出现在朋友的ig画面中 前阵子找时间到忠孝店品嚐 在价位方面 考量炙烧和牛寿司有数量限...
嗨大家!昨天跟大家分享一个 library 叫做 SWR,文章在这里~ 今天用 SWR 新增了小功能...
业务(business)就是有关产品和服务交付(delivery),以创造价值并实现组织愿景和使命...