首页 > 解决方案 > 仅当 React 属性更改时如何调用函数?

问题描述

alert()我希望每次在 React 中跟踪的 Meteor 订阅发生变化时显示一个模式对话框(例如一个) withTracker

我曾尝试使用Tracker.autorun来跟踪更改,但无法确定在代码中放置它的位置。它似乎在Component构造函数中不起作用,并且如果放置在render().

这是我的代码的概要:

class Foo extends Component {
    render() {
        return (
            <h1>Example Header</h1>
            { this.maybeShowAlert() }
        );
    }

    maybeShowAlert() {
       // ONLY if bar has been updated
       alert('bar has changed');
    }
}

export default withTracker(() => {

    Meteor.subscribe('bar')

    return {
        bar: Bar.findOne({})
    };
})(Foo);


标签: reactjsmeteormeteor-reactmeteor-tracker

解决方案


之前没有使用过 Meteor,但是如果你想对状态/属性的变化做出响应,那么componentDidUpdate()它就是生命周期方法。例如

componentDidUpdate(prevProps) {
    if (this.props.bar !== prevProps.bar {
        // bar prop has changed
        alert("bar changed);
    }
}

推荐阅读