reactjs - 仅当 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);
解决方案
之前没有使用过 Meteor,但是如果你想对状态/属性的变化做出响应,那么componentDidUpdate()
它就是生命周期方法。例如
componentDidUpdate(prevProps) {
if (this.props.bar !== prevProps.bar {
// bar prop has changed
alert("bar changed);
}
}
推荐阅读
- ios - 【UISearchController / UISearchBar】如何在输入文字时一直显示书签按钮?
- spring-tool-suite - spring 工具套件快速搜索语法?
- python - 无法在类中使用断言函数
- javascript - 无法在不和谐机器人上设置状态
- sql-server - 打印存储过程中选择语句的列名
- r - R 中汇总和分组数据的箱线图
- flutter - 如何为某些条件创建 if/else 语句
- android-studio - okHttp3 newCall的参数不匹配类型请求
- python - Numpy:从字典中展平多个不同形状的数组
- r - 如何在一年中的几个月的 y 轴上生成多条线的媒体图