我目前正在编写一个 React 应用程序,当任何可观察的值发生变化时,它应该能够重新渲染组件。问题是,email
如果它发生变化,我将无法重新渲染。
store.ts
export class ExampleStore {
@observable email = 'hello';
@action setEmail(email: string) {
this.email = email;
}
}
索引.tsx
const stores = {
exampleStore
};
ReactDOM.render(
<Provider {...stores}>
<App />
</Provider>,
document.querySelector('#root')
);
应用程序.tsx
interface Props {
exampleStore?: ExampleStore;
}
@inject('exampleStore')
@observer
export class App extends React.Component<Props, {}> {
componentDidMount() {
setInterval(() => {
this.props.exampleStore!.setEmail(Math.random() * 10 + '');
}, 2500);
}
render() {
const { email } = this.props.exampleStore!;
return <div>{email}</div>;
}
}
我见过很多使用useContext
钩子的例子,但我必须使用类组件。我不确定为什么这不会再次调用渲染函数。我有mobx
并mobx-react
安装。