问题:它是一个反模式,既有mobx和反应,然后利用两个反应组件状态,并从mobx的@observer
@observable
?React状态和mobx - 反模式?
由于我能理解,mobx试图取代反应状态,或者至少做了非常相似的事情。
问题:它是一个反模式,既有mobx和反应,然后利用两个反应组件状态,并从mobx的@observer
@observable
?React状态和mobx - 反模式?
由于我能理解,mobx试图取代反应状态,或者至少做了非常相似的事情。
从广义上讲,使用React组件的内部状态和MobX存储不是一种反模式。但请考虑以下几点:
我相信任何可以称为business logic的东西都应该进入全局状态。
说明可以隔离到单个组件的状态可以驻留在组件本身内部,只要它不是业务逻辑的一部分,我们的组件应该只是观察它们。
@observer
。为什么?读取它here(用@observer
替换@connect
)我不会称之为反模式,但它打败了我最喜欢的MobX方面之一。在使用MobX时,你只会处理道具。我喜欢这个,因为我永远不用担心财产是否生活在道具或状态中。自从我开始使用MobX以来,我从来没有遇到过需要对某个组件进行本地“状态”的情况。我发现最好是保持商店中的所有应用程序状态,将该状态作为道具传递到顶级组件......
但是,如果您需要使用MobX的“有状态”组件,则可以这样做。
import React, { Component } from 'react';
import { action, observable } from 'mobx';
import { observer } from 'mobx-react';
@observer
export default class User extends Component {
@observable user = {
firstName: 'john',
lastName: 'lennon',
status: 'alive'
};
@action updateUserStatus(newStatus) {
this.user.status = newStatus
}
render() {
const { firstName, lastName, status } = this;
return (
<p>{firstName} {lastName} - {status}</p>
);
}
}
问题是为什么你会这样做?在我的一个项目中,我使用'MobX'管理了大部分应用程序的状态,但是我有一个模态对话框组件,它需要成为一个有状态的组件,所以我使用'setState()'来管理特定组件的状态,因为它似乎没有必要在那里使用'MobX'(但我可能会有) –