说明:我正在做一个反应本机应用程序,在那里我有我下面GitHub上的用户列表,我想实现取消追踪和刷新列表的功能.
我创建了两个异步帮助程序来与github API进行交互,一个用于取消关注用户(通过PUT),另一个用于获取以下列表(通过GET).我还在以下组件列表中添加了一个firebase侦听器.以下每个人都会将我导航到一个由取消关注按钮组成的个人资料视图.单击按钮时,它应取消关注用户,更新组件中的以下列表,然后导航回以下组件列表.
问题 取消关注用户正在按预期工作,但以下列表视图仍包含旧列表.我的代码返回旧数据,即使github api正在返回新的更新数据,所以我怀疑问题必须是我使用async/await的方式.
我甚至做了一个刷新按钮来刷新以下列表,但新数据有时只返回,比如1/20次.
更新:在测试多个场景之后,我认为firebase不是问题,因为fetch返回相同的旧数据.我认为主要问题可能在于fetch电话会议.我已经测试了从Postman获取数据并且它抓取了正确的数据.
fetch由于response.json()包含旧数据,似乎没有按预期工作.我在这里做了一个简单的jsfiddle(你需要提供自己的访问令牌),显示get_following -> unfollow -> get_following成功运行,也就是修改了以下数据.但是,在我的应用程序中,即使github网站UI显示更改并且Postman返回新修改的数据fetch,unfollow也会返回相同的旧的后续数据.我还稍微更新了代码.
码
以下列表
/**
* Listens for any changes on the database and updates the
* dataSource accordingly.
* @param {Firebase Object} ref
*/
_listenForData(ref) {
ref.on('value', (snapshot) => {
this.setState({
dataSource: snapshot.val()
},
this.setState({
isLoading: false,
}));
});
}
componentDidMount() {
// Sets up the listener for realtime changes.
GithubApi.get_followings(this.ref) …Run Code Online (Sandbox Code Playgroud) 我知道这个问题很令人困惑,但很难为这个问题想出一个好的标题,所以我将在这里描述更多。
我有一个带有 2 个方法的接口 A,IsValidRow()并且IsFileValid()
有一个基类 B 和一个派生类 C 这里的目标是我希望基类实现IsFileValid(),因此它可以由从基类派生的所有类继承,并且每个要实现的派生类IsValidRow()。
问题是内部IsFileValid()调用IsValidRow()。如果我做
B:A
Run Code Online (Sandbox Code Playgroud)
A需要IsValidRow()在B中实现。
目前我的派生类C继承自基类和接口atm。
我不介意重构一切,只要满足这两种方法的要求即可(一种方法将在基类或其他方法中实现一次并继承,而另一种方法将在每个派生类中实现)
interface IFileValidator
{
Pair<bool, string> IsValidRow(List<string> row);
bool IsFileValid(string file);
}
class FileValidator : IFileValidator
{
public bool IsFileValid(string file)
{
// calls IsValidRow()
IsValidRow();
}
}
class FacilitiesCalendarValidator : FileValidator, IFileValidator
{
public Pair<bool, string> IsValidRow(List<string> row)
{
//stuff
}
}
Run Code Online (Sandbox Code Playgroud) int main(){
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(vec[0]);
for (auto it = vec.begin(); it != vec.end(); it++) {
std::cout << *it << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这输出[1,2,1],我理解,因为矢量正在复制vec [0]并将其推回.但是,我希望输出像[2,1]并且好奇我是否可以在不使用push_back()然后必须使用erase()的情况下完成此操作;
目标:我希望能够将向量中的元素移动到结尾,而向量相应地调整自身,所以如果我将第5个位置的元素移动到结尾,原始第5个位置之后的所有元素都会向上移动,所以新的第5个位置将元素放在旧的第6个位置,依此类推.
该程序用于验证Excel行数据.如果if语句为false,我需要将消息附加到字符串,依此类推N个if语句.这不起作用,因为你可以看到第一个if语句是否失败,我不会继续查看其他if语句.后来,我需要处理100多列,所以我正在寻找一种方法来做到这一点.
有没有其他方法可以重写这个,所以它更具可读性和重复性?我知道我可以做一个巨大的if(.... && ....)来验证所有单元格和if if语句来附加消息,但我想知道是否还有另一种方法可以做到这一点.我想保留错误的顺序,但这并不重要.结果就像"facilityID is invalid, daysOfTheWeek is invalid"我还返回一个自定义Pair数据类型.
string facilityID, facilityDockDoorID, increment, hoursOfOperationId, updatedById, startTime, endTime, dockDoorServiceType, daysOfTheWeek;
facilityID = row[0];
facilityDockDoorID = row[1];
increment = row[2];
hoursOfOperationId = row[3];
updatedById = row[4];
startTime = row[5];
endTime = row[6];
dockDoorServiceType = row[7];
daysOfTheWeek = row[8];
string errorMessage = " is invalid";
if (IsInt(facilityID))
{
if (IsInt(facilityDockDoorID))
{
if (IsInt(increment))
{
if (IsInt(hoursOfOperationId))
{
if (IsInt(updatedById))
{
if (IsTime(startTime))
{
if (IsTime(endTime))
{
if (IsValidDockDoorServiceType(dockDoorServiceType))
{
if …Run Code Online (Sandbox Code Playgroud) c# ×2
async-await ×1
c++ ×1
class ×1
erase ×1
fetch-api ×1
firebase ×1
if-statement ×1
inheritance ×1
javascript ×1
push-back ×1
react-native ×1
vector ×1