美文网首页React
React(update the UI的三种方法)

React(update the UI的三种方法)

作者: 余生筑 | 来源:发表于2017-10-22 21:53 被阅读5次

如何更新一个Clock组件的时间状态

  • 方法1:setInterval()
function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  ReactDOM.render(
    element,
    document.getElementById('root')
  );
}

setInterval(tick, 1000);

缺陷:没有把时间更新功能封装至Clock体内。

  • 方法2:利用props
function Clock(props) {
  return (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {props.date.toLocaleTimeString()}.</h2>
    </div>
  );
}

function tick() {
  ReactDOM.render(
    <Clock date={new Date()} />,
    document.getElementById('root')
  );
}

setInterval(tick, 1000);

缺陷: <Clock date={new Date()} />的形式不够严密,我们希望Clock组件不向外暴露任何和时间状态有关的接口。

  • 方法3 利用state

components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.

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

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

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

相关文章

网友评论

    本文标题:React(update the UI的三种方法)

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