这些是createPost
屏幕中的方法。
每个post
最多可与topics
关联selectedTopics
主要Feed可以按主题过滤帖子:topicFilter
当用户创建帖子时,我想检查其中一个用户selectedTopics
中是否有interests
。如果是,则topicFilter
将设置为My Top Interests
。
hot
和new
Feed都会使用此topicFilter
进行刷新,然后应用会从createPost
屏幕导航到feed
屏幕。< / p>
但是,如果帖子的selectedTopics
都不在用户中,那么interests
,然后topicFilter
将设置为selectedTopics
中的第一个主题。与其他情况一样,Feed会刷新,应用会导航到feed
屏幕。
这不起作用。
以下是createPost
方法:
createPost() {
const { text, image, mongoId, selectedTopics, topicCount } = this.props;
const postToUniOnly = this.state.postToUniOnly;
if (topicCount > 0) {
if (image) {
this.props.createPostWithImage(text, image, postToUniOnly, mongoId, selectedTopics);
} else {
this.props.createPostNoImage(text, postToUniOnly, mongoId, selectedTopics);
}
const myInterestsPostTopicMatch = this.seeIfAnyPostTopicsInMyInterests();
if (myInterestsPostTopicMatch)
this.ChangeTopicFilterToMyInterestsAndNavigate()
.then(() => this.refreshFeed())
.catch(err => console.log(err));
else
this.ChangeTopicFilterToOtherAndNavigate()
.then(() => this.refreshFeed())
.catch(err => console.log(err));
}
}
这会检查用户中是否有selectedTopics
的任何内容。 interests
:
seeIfAnyPostTopicsInMyInterests() {
const { selectedTopics, interests } = this.props;
return interests.some((interest) => selectedTopics.indexOf(interest) >= 0);
}
这些是每个人的承诺:
ChangeTopicFilterToMyInterestsAndNavigate() {
const { topicFilter } = this.props;
return new Promise((resolve, reject) => {
this.props.toggleTopicFilter('My Top Interests');
this.props.navigator.pop(2);
if (topicFilter === 'My Top Interests') resolve();
else reject('could not switch to my interests');
});
}
ChangeTopicFilterToOtherAndNavigate() {
const { selectedTopics, topicFilter } = this.props;
return new Promise((resolve, reject) => {
this.props.toggleTopicFilter(selectedTopics[0]);
this.props.navigator.pop(2);
if (topicFilter === selectedTopics[0]) resolve();
else reject('could not switch to other topicFilter');
});
}
这是refreshFeed
:
refreshFeed() {
const { uniOnly, topicFilter } = this.props;
this.props.fetchPostsByHottest(topicFilter, uniOnly);
this.props.fetchPostsByNewest(topicFilter, uniOnly);
}
现在topicFilter
确实得到了适当的改变。但它在刷新Feed之前没有这样做。
它还导航到Feed。但是这两个承诺都被拒绝,记录错误,而不是refresh
Feed。
我该怎么做才能解决这个问题?谢谢