Day8 React State(编辑中)

State概要

React Component 只能透过资料状态的改变来更新UI,资料来源来自於以下两种方式:

  • 透过外部传进来Component的 Props
  • Component内部自己的 State
    当Props或State的资料有更新时,React就会刷新一次UI。

class Component中的constructor()用 this.state初始化State物件;若要存取使用的话也是透过this.stat。更新State的资料时,使用 React提供的方法 this.setState()更新 State。

下面用一个clock Component作为state范例,透过Sta:

class Clock extends React.Component {

  // 当Component被 ReactDOM.render() 渲染到画面时,React 会先执行constructor里的逻辑判断
  constructor(props) {
    super(props);

    // 初始化state 资料,可以放物件、字串、或阵列
    this.state = {date: new Date()};
  }

  // React call render() 拿到要显示到 DOM 的元素内容
  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

ReactDOM.render(
  <Clock />,
  document.getElementById('root')
);

修改state

用下列的方式更新constructor()之外的State。

this.setState(更新的内容);

setState相关语法介绍

React为了效能的考量,会将好几次的this.setState()统整後再做一次更新,这表示执行完this.setState()後,下一行this.state不一定能取得最新的State。
以下的语法可以取得当前最新的State和prop:

this.setState( (prevState, props) => stateChange )

prevState和props分别为当前最新的State和props。

State和Props为非同步更新的缘故,React有一个callback function可以在更新完State时进行逻辑判断。

setState(stateChange, callback function)

<<:  [Day 08] 原形设计的样板参考

>>:  Day 8 MITRE ATT&CK for ICS

Kneron - Kneron Toolchain 转档操作参考笔记

Kneron - Kneron Toolchain 转档操作参考笔记 参考资料 onnx 档案来源:...

爬虫怎麽爬 从零开始的爬虫自学 DAY30 铁人赛完赛心得

完赛心得 这次的铁人赛我成功坚持完赛了,在这30天内我是真真实实的30天连续自学,因为我是从9/15...

Gulp 基础介绍 gulp-postcss 与 autoprefixer DAY81

这里要来介绍如何优化 css 有时候我们因为要加前缀词(有的旧浏览器不支援,所以需要加) 但这会浪费...

day7 : logging集中(上)

昨天让kubernetes上的各项监控数据顺利的统一到grafana上,今天就来把服务的log统一集...

Windows Live Mail Email Backup to Outlook

Summary: in this post, we are explaining a reliabl...