gpt4 book ai didi

javascript - 无法获得 mobx 自动运行、 react 、何时重新触发多次

转载 作者:行者123 更新时间:2023-11-28 04:25:56 24 4
gpt4 key购买 nike

我有一个简单的组件,可以呈现 null,但当通知存储中的 shown 属性更改为 true 时,应该显示 iOS/Android 警报,使用 autorun/reaction/from mobx 时,它仅运行一次即可正常工作我可以通过 spy 看到 hideNotification 也被正确触发,将 shown 设置回 false,但我无法重新触发警报不再了。

组件

import { Component } from "react";
import { observer, inject } from "mobx-react/native";
import { reaction } from "mobx";
import { Alert } from "react-native";

@inject("notification")
@observer
class Notification extends Component {
// -- methods ------------------------------------------------------------- //
componentDidMount() {
reaction(
() => this.props.notification.shown,
() => {
if (this.props.notification.shown)
Alert.alert(
this.props.notification.type,
this.props.notification.message,
[
{
text: "Close",
onPress: this.props.notification.hideNotification
}
]
);
}
);
}

// -- render -------------------------------------------------------------- //
render() {
return null;
}
}

export default Notification;

商店

import { observable, action } from "mobx";

const ERROR = "notification/ERROR";
const SUCCESS = "notification/SUCCESS";

class NotificationStore {
// -- store --------------------------------------------------------------- //
@observable type = ERROR;
@observable message = "";
@observable shown = false;

// -- actions ------------------------------------------------------------- //
@action
errorNotification(message) {
this.type = ERROR;
this.message = message;
this.shown = true;
}

@action
successNotification(message) {
this.type = SUCCESS;
this.message = message;
this.shown = true;
}

@action
hideNotification() {
this.shown = false;
}
}

export default NotificationStore;

最佳答案

问题是类函数没有正确绑定(bind),将它们更改为

@action
errorNotification = (message) => {
this.type = ERROR;
this.message = message;
this.shown = true;
}

帮我解决了这个问题

关于javascript - 无法获得 mobx 自动运行、 react 、何时重新触发多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45061448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com