当我更新Mobx存储的属性时,该值会更新,但不会触发渲染。
我的商店
@observable leftAsideActive = 4;
@observable rightAsideActive = false;
@action setAsideState(side, active) {
if(side == UI_LEFT){ this.leftAsideActive = active};
if(side == UI_RIGHT){ this.rightAsideActive = active};
}
getLeftState(){
return this.leftAsideActive;
}
我的观点基本上是这样
class IOManagerView extends React.Component {
constructor(props){
super(props);
}
render() {
const { inputFiles, leftIsActive, handleFileChosen, activeLeft } = this.props;
return (
{leftIsActive + " "}
)
}
从我的控制器
class IOManagerController extends React.Component {
constructor(props){
super(props);
this.state = {
displayed: true
}
this.handleFileChosen = this.handleFileChosen.bind(this);
this.activeLeft = this.activeLeft.bind(this);
}
activeLeft(){
this.props.UI.activeLeft();
}
render() {
const { inputFiles, UI } = this.props;
return (
<IOManagerView
leftIsActive={UI.leftState()}
activeLeft={this.activeLeft}
/>
)
}
}
如果我在运行UI.leftState()
之前和之后检查this.props.UI.activeLeft();
的值,那么我可以看到该值已正确更新
奇怪的是,我还有另一个可以很好地适用于动作和渲染。我比较都设置了文件,他们是双胞胎
答案 0 :(得分:3)
您必须确保使用可观察对象的组件使用@observer
装饰器,以便在可观察的更改时重新呈现它们。
@observer
class IOManagerView extends React.Component {
// ...
}
@observer
class IOManagerController extends React.Component {
// ...
}