Javascript Meteor react设计-嵌套组件:函数调用
我目前面临着Meteor and React的问题,我知道一些部分解决方案,但它们不起作用,在我看来,它们都没有指向真正的方向 情况: 所有的一切都是关于健身应用程序的:我有一个代表客户锻炼的结构,而每个锻炼都可以有一个定义数量的集合(一个集合是锻炼的频率)。每个集合都有一些属性(用户可以在字体端操作的所有属性) 现在我有了以下带有一些映射函数的组件结构(状态属性位于{}): 从UI角度(react)来看,这一切都可以正常工作 现在的想法是在训练组件中有一个“保存”按钮。按下按钮时,我希望将所有集合组件的状态保存在“集合”集合中(如果它具有默认占位符以外的值),同时将训练组件保存在“训练”集合中。但培训还应包括关于集成了哪些集合的信息(因此,至少集合id在保存时应处于培训组件状态) 现在,我的想法如下:Javascript Meteor react设计-嵌套组件:函数调用,javascript,mongodb,reactjs,meteor,Javascript,Mongodb,Reactjs,Meteor,我目前面临着Meteor and React的问题,我知道一些部分解决方案,但它们不起作用,在我看来,它们都没有指向真正的方向 情况: 所有的一切都是关于健身应用程序的:我有一个代表客户锻炼的结构,而每个锻炼都可以有一个定义数量的集合(一个集合是锻炼的频率)。每个集合都有一些属性(用户可以在字体端操作的所有属性) 现在我有了以下带有一些映射函数的组件结构(状态属性位于{}): 从UI角度(react)来看,这一切都可以正常工作 现在的想法是在训练组件中有一个“保存”按钮。按下按钮时,我希望将所有
编辑: 正如所建议的,也有可能解决会话问题。因此,我添加了以下代码来设置:
componentDidMount() {
Tracker.autorun(() => {
Session.set(`set_${this.state.id}`, {
...this.state
});
});
}
然后,我的想法是迭代从“set_”开始的训练中的所有会话键-不幸的是,没有保存所有键的函数
第二个想法是使用数组作为会话对的值。然而,处理反应集组件的更新(从会话复制数组、检查元素是否可用、创建新元素或更新现有元素)是一个相当复杂的过程
编辑2: 我想我在Session中找到了一个解决方案:
Object.getOwnPropertyNames(Session.keys)
完成了获取所有会话密钥的技巧!感谢您的帮助!如果您不想在子组件中使用Redux或传递父绑定回调,您可以尝试在应用程序级别存储数据,这些数据可以在任何组件中访问(设置/获取)
在您的情况下,您可以设置“set”的值在会话中并在培训中访问它。您可能还需要。使用withTracker将有助于在任何会话变量更改时对数据库进行反应式更新。听起来您需要类似于
redux
的东西来管理非本地状态。感谢您的回答!不幸的是,我认为在使用Meteor、espe时可以省略redux尤其是Redux,它主要用于UI状态,但在我的情况下,没有它,UI状态工作得很好谢谢分享这个想法!我尝试过它,并认为它将是解决方案,不幸的是,很难获得ID(检查更新的主帖子)对象。getOwnPropertyNames(Session.keys)成功了!谢谢你的提示!我只是想知道哪一个可以被认为是最佳实践?
Object.getOwnPropertyNames(Session.keys)