javascript - 每次更新特定状态时重新启动功能
问题描述
我在组件 didmount 中创建了一个函数(newdispo)来创建预订可用性提要,它基于从 10:00 到 19:00 的相对日期(例如)它将创建具有状态间隔的可用性(间隔)(1 小时例如)因此它向我显示了相对于今天日期“this.stat.day”今天(07/04/2020)的可用性示例:04/07/2020 - 10:00 04/07/2020 - 11:00 等。 ..
但是我想让页面灵活,我有一个导航栏,显示一周的第二天,当我点击另一天时,如果选择的日期更新,则状态为“天”,
我希望每次更新状态时都重新启动功能(newdispo),并且每次更改状态“间隔”或“天”时都会更新提要更改
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
constructor(props) {
super(props);
this.state = {
day :'07/04/2020',
interval : '00:60:00',
dispo: []
}
}
componentDidMount(day,interval,newdispo){
interval:this.state.interval
day:this.state.day
newdispo = [{ date:day
hour: ...},
{ date:day
hour: ...} ect..]
this.setState=({ dispo: newdispo});
}
changeday = (e) => {
this.setState=({ day:e.target})
}
changeinterval = (e) => {
this.setState=({ interval : e.target })
}
render(){
return (
<button onclick={this.changeday}>08/04/2020</button>
<button onclick={this.changeday}>09/04/2020</button>
//ect..//
< button onclick={this.changeinterval}>00:30:00</button>
< button onclick={this.changeinterval}>02:00:00</button>
//ect..//
this.state.calendar.map((time) => {
<button value:{time.date} >{ time.hour} </button>
})}
)
}
解决方案
生命周期方法componentDidUpdate是您需要的,例如:
componentDidUpdate( prevProps, prevState ) {
if( this.state.day !== prevState.day ){
this.setState=({
dispo: [
{ date: ..., hour: ...},
...
]
});
}
}
推荐阅读
- android - Kodein - 检索 ViewModel 片段父级
- dart - 实例化 Dart 类时防止类属性为空
- flutter - 如何避免列表中显示的所有内容?
- java - 在 import org.webrtc.audio.LegacyAudioDeviceModule 类中找不到符号 LegacyAudioDeviceModule 错误;
- macos - 可以以编程方式禁用 Facetime 的来电吗?- Mac OSX
- android - IBM Watson 未经授权
- node.js - 在 localhost 上调试 firebase 函数错误:找不到模块
- algorithm - 自下而上 SLR(1) 冲突 / 两者都适用时减少
- android - Xamarin Android 连接到现有的 Wi-Fi AP
- c++ - 如何从文件中读取 Unicode 字符(非英语语言),这样我就可以拒绝诅咒词 [C++]?