React Mobx 向导不重新渲染
React Mobx Wizard not re-rendering
我遇到了 mobX 未触发渲染的问题。想象一个带有 next/previous 按钮的向导来加载步骤(其他组件)。
首先是代码(在 TypeScript 中)-
*(注意 - 我更改了名称并简化了这段代码以仅显示问题,实际项目完全不同)
精灵商店:
export class WizardStore {
@observable private currentStep = 0;
@action public getCurrentStep() {
return this.currentStep;
}
@action public goNext() {
this.currentStep += 1;
}
}
WizardHost 组件:
@observer @inject('wizardStore')
export default class WizardHost extends React.Component<IProps, {}> {
public render() {
return (
<div>
<Wizard />
<button onClick={() => this.props.wizardStore.goNext()}>Next</button>
</div>
);
}
}
向导:
@observer @inject('wizardStore')
export default class Wizard extends React.Component<IProps, {}>{
public render() {
return <div>{this.props.wizardStore.getCurrentStep()}</div>;
}
}
问题:当我单击“下一步”按钮时,商店中的代码被触发并且 currentStep 属性 正在更新。向导组件不会呈现更改。
我认为问题在于我的按钮正在更新存储 属性 currentStep,但 WizardHost 中的渲染并未直接使用 currentStep 属性。我认为因为 Wizard 组件在它的渲染中使用商店,所以它会在 currentStep 更改时导致重新渲染,但事实并非如此。感谢任何帮助!
我实际上一切正常,但我不知道为什么。我确实重新启动了 vsCode,所以它可能有些不正常。
我遇到了 mobX 未触发渲染的问题。想象一个带有 next/previous 按钮的向导来加载步骤(其他组件)。 首先是代码(在 TypeScript 中)-
*(注意 - 我更改了名称并简化了这段代码以仅显示问题,实际项目完全不同)
精灵商店:
export class WizardStore {
@observable private currentStep = 0;
@action public getCurrentStep() {
return this.currentStep;
}
@action public goNext() {
this.currentStep += 1;
}
}
WizardHost 组件:
@observer @inject('wizardStore')
export default class WizardHost extends React.Component<IProps, {}> {
public render() {
return (
<div>
<Wizard />
<button onClick={() => this.props.wizardStore.goNext()}>Next</button>
</div>
);
}
}
向导:
@observer @inject('wizardStore')
export default class Wizard extends React.Component<IProps, {}>{
public render() {
return <div>{this.props.wizardStore.getCurrentStep()}</div>;
}
}
问题:当我单击“下一步”按钮时,商店中的代码被触发并且 currentStep 属性 正在更新。向导组件不会呈现更改。
我认为问题在于我的按钮正在更新存储 属性 currentStep,但 WizardHost 中的渲染并未直接使用 currentStep 属性。我认为因为 Wizard 组件在它的渲染中使用商店,所以它会在 currentStep 更改时导致重新渲染,但事实并非如此。感谢任何帮助!
我实际上一切正常,但我不知道为什么。我确实重新启动了 vsCode,所以它可能有些不正常。