假装这些都是渲染.
this.state.foo = whatever;
Run Code Online (Sandbox Code Playgroud)
if (this.isMounted()) { this.getDOMNode().textContent = whatever };
document.querySelector('title').textContent = whatever;
Run Code Online (Sandbox Code Playgroud)
return <div>{Math.random()}</div>
Run Code Online (Sandbox Code Playgroud)
if (new Date().getHours()>=9 && new Date().getHours()<=12+5) {
return <div>{this.props.fortune}</div>
}
else {
return <div>I'm off the clock</div>
}
Run Code Online (Sandbox Code Playgroud)
您在注释中特别提到了最后一个示例,因此处理时间的正确方法是在getInitialState中获取时间,然后在componentDidMount中设置超时,以便在时间更改时影响呈现,并在那里设置setState.这样您的UI就与世界保持同步.
一个天真的解决方案是将setInterval设置为几秒钟,这很好,直到你有时间优化它.这里真正的解决方案就是这样
var now = Date.now(),
closing = new Date(); closing.setHours(12+5, 0, 0, 0),
opening = new Date(); opening.setHours(9, 0, 0, 0), delay;
// past closing
if (now > closing || now < opening) {
if (opening < now) {
opening.setHours(9+24);
}
delay = opening - now;
}
// currently open
else {
delay = closing - now;
}
setTimeout(delay, updateStateWithTime);
Run Code Online (Sandbox Code Playgroud)
就像任何状态随时间的变化一样,mixins通常是抽象和重用的好方法.
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |