gpt4 book ai didi

javascript - Parse React - 观察由 Parse.User.current() 创建的对象

转载 作者:行者123 更新时间:2023-11-29 10:40:45 24 4
gpt4 key购买 nike

我正在使用优秀的 parse-react使 Parse 和 ReactJS 很好地协同工作的库(注意,我只玩了几个小时,如果我误解了 reactjs 的任何基础知识,我深表歉意)。一切顺利,直到我想查询当前用户创建的所有对象的表 (Parse.user.current())

observe 方法在加载时工作正常,并且使用正确的对象(当前用户创建的对象)呈现 View 。但是,如果我改变数据并添加一个新对象,则 View 不会重新呈现。

抽象代码:

module.exports = React.createClass({
mixins: [ParseReact.Mixin],
getInitialState: function() {
return {
selected: null
};
},
observe: function() {
return {
places: (new Parse.Query('Place'))
.equalTo('user', Parse.User.current())
.descending('createdAt')
};
},
clickHandler: function(event) {

var id = event.target.id;
if (id === 'new') {
ParseReact.Mutation.Create('Place', {
name: 'New Place',
user: Parse.User.current()
}).dispatch();
} else if(id.indexOf('Place:') === 0) {
this.setState({
selected: id.substring(6)
});
}

},
render: function() {

var that = this;
var navItems = this.data.places.map(function(place) {
return (
<UserNavItem id={place.id} key={place.id} label={place.name} selected={that.state.selected === place.objectId} onClick={that.clickHandler}/>
);
});

return (
<ul>
{navItems}
<UserNavItem id='new' label='+ New Place' onClick={this.clickHandler} />
</ul>
);

}
});

如果我删除指定用户的查询部分:

.equalTo('user', Parse.User.current())

然后就可以了;添加后,新的地点对象会出现在列表中。

有人知道我做错了什么吗?

我是否错误地使用了 Parse 查询?当这似乎是一个常见的用例时,获取与当前用户有关的数据有点痛苦,这似乎总是很奇怪?

谢谢!

最佳答案

解决方案是在 Parse 中成功创建新对象时调用组件的 .refreshQueries() 方法,如 here 所述。 .

我更新的例子:

            ParseReact.Mutation.Create('Place', {
name: 'New Place',
user: Parse.User.current()
})
.dispatch()
.then(function() {
this.refreshQueries();
}.bind(this));

非常感谢 Joshua Sierles在 ParseReact github repo 上为我指出了解决方案。如果你在 SO Joshua 上,如果你在这里发布你的答案,我会给你荣誉:D

关于javascript - Parse React - 观察由 Parse.User.current() 创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800798/

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