当 属性 值从 javascript 更改时如何重置所有状态?
How to reset all states when property value is changed from javascript?
我正在使用模板框架。在我的组件中,我使用不同的状态来触发不同的事件。我还从 javascript 更新组件的 属性 值。
我想重置所有状态值并使用更新后的 属性 值重新加载组件。
新的 属性 值负责许多操作,例如调用 api、生成缓存键等
任何人都可以建议我最好的方法来满足我的要求。目前我正在重置 属性 的 watcher 方法中的所有状态并调用 componentWillLoad 事件,但我在这种方法中面临很多问题。
示例代码
@Prop() symbol!: string;
@Watch('symbol')
symbolChanged(newSymbol: string, prevSymbol: string) {
if (newSymbol && newSymbol !== prevSymbol) {
this.resetStates();
}
}
resetStates() {
//Reset all state values here
this.componentWillLoad();
}
通过在 render 方法的根元素上设置键 属性 将解决我的问题,如下面的代码片段。
uniqKeyId = uniqid.get();
@Prop() symbol!: string;
@Watch('symbol')
sysmbolWatcher(newSymbol: string, prevSysmbol: string) {
if (newSymbol != prevSysmbol) {
//update key attribute each switch of exchange
this.uniqKeyId = uniqid.get();
//Set default values based on properties as to consider this as fresh request.
this.setDefaultValues();
}
}
并且在如下所示的渲染方法中
render() {
return (
<section class="cid-minichart" key={this.uniqKeyId}>
//Render markup
</section>
);
}
我正在使用模板框架。在我的组件中,我使用不同的状态来触发不同的事件。我还从 javascript 更新组件的 属性 值。
我想重置所有状态值并使用更新后的 属性 值重新加载组件。 新的 属性 值负责许多操作,例如调用 api、生成缓存键等
任何人都可以建议我最好的方法来满足我的要求。目前我正在重置 属性 的 watcher 方法中的所有状态并调用 componentWillLoad 事件,但我在这种方法中面临很多问题。
示例代码
@Prop() symbol!: string;
@Watch('symbol')
symbolChanged(newSymbol: string, prevSymbol: string) {
if (newSymbol && newSymbol !== prevSymbol) {
this.resetStates();
}
}
resetStates() {
//Reset all state values here
this.componentWillLoad();
}
通过在 render 方法的根元素上设置键 属性 将解决我的问题,如下面的代码片段。
uniqKeyId = uniqid.get();
@Prop() symbol!: string;
@Watch('symbol')
sysmbolWatcher(newSymbol: string, prevSysmbol: string) {
if (newSymbol != prevSysmbol) {
//update key attribute each switch of exchange
this.uniqKeyId = uniqid.get();
//Set default values based on properties as to consider this as fresh request.
this.setDefaultValues();
}
}
并且在如下所示的渲染方法中
render() {
return (
<section class="cid-minichart" key={this.uniqKeyId}>
//Render markup
</section>
);
}