小编amb*_*amb的帖子

为什么来自JavaScript fetch API的响应对象是一个承诺?

从具有JavaScript fetch API的服务器请求时,您必须执行类似的操作

fetch(API)
  .then(response => response.json())
  .catch(err => console.log(err))
Run Code Online (Sandbox Code Playgroud)

在这里,response.json()正在解决它的承诺.

问题是,如果你想捕获404错误,你必须解决响应承诺,然后拒绝获取承诺,因为只有在catch出现网络错误时你才会结束.所以fetch调用就像是

fetch(API)
  .then(response => response.ok ? response.json() : response.json().then(err => Promise.reject(err)))
  .catch(err => console.log(err))
Run Code Online (Sandbox Code Playgroud)

这是一个更难阅读和推理的东西.所以我的问题是:为什么需要这个?将承诺作为回应价值有什么意义?有没有更好的方法来处理这个?

javascript ecmascript-6 es6-promise fetch-api

28
推荐指数
1
解决办法
1万
查看次数

将request.user与Django ModelForm一起使用

我遇到了登录用户和Django的问题ModelForm.我有一个名为类_Animal_具有ForeignKeyUser以及与年龄,种族,动物的一些数据,等等.

用户可以添加动物的分贝,我要跟踪每个动物的作者,所以我需要添加request.user当用户创建的动物实例被记录.

models.py

class Animal(models.Model):
    name = models.CharField(max_length=300)
    age = models.PositiveSmallIntegerField()
    race = models.ForeignKey(Race)
    ...
    publisher = models.ForeignKey(User)
    def __unicode__(self):
        return self.name

class AnimalForm(ModelForm):
    class Meta:
        model = Animal
Run Code Online (Sandbox Code Playgroud)

主要目标是隐藏表单中的发布者字段,并在按下保存按钮时提交已登录的用户.

我可以在视图中捕获当前用户initial,但我也想要的不显示该字段.

views.py

@login_required
def new_animal(request):
    if request.method == "POST":
        form = AnimalForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
        else:
            variables = RequestContext(request, {'form': form})
            return render_to_response('web/animal_form.html', variables)
    else:
        form = AnimalForm(initial={'publisher': request.user})
    variables = RequestContext(request, {'form': form})
    return render_to_response('web/animal_form.html', …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-views

18
推荐指数
2
解决办法
1万
查看次数

如何设置Flow类型的默认值?

我已经定义了自定义Flow类型

export type MyType = {
  code: number,
  type: number = 1,
}
Run Code Online (Sandbox Code Playgroud)

我希望type参数默认为1好像没有值.然而,Flow正在抱怨Unexpected token =.

流量错误

可以用Flow完成吗?

目前正在使用Flow v0.32.0.

javascript flowtype

16
推荐指数
3
解决办法
2万
查看次数

针对React Native的测试平台特定扩展代码

目前,React Native动态地需要具有特定文件扩展名的运行平台的文件,*.ios.js*.android.js.但是,在测试环境中运行此代码时,我们会收到require错误,因为require('./module')在文件树中找不到模块,如下所示:

  • module.ios.js
  • module.android.js

我们如何在测试环境中处理这个问题?

testing jestjs react-native

13
推荐指数
1
解决办法
2055
查看次数

当应用程序在单独的线程中在iOS中处于活动状态时,定期从服务器轮询数据的最佳方法是什么?

我需要在iOS应用程序中定期轮询来自服务器的数据.我需要在一个线程中每隔10秒执行一次,以保持UI可用.当用户登录时,将触发此函数.我正在考虑使用NSRunLoopwith NSTimer来实现此功能,并且可能用于AFNetworking获取JSON数据.

这是正确的方法吗?应该使用GCD吗?

iphone nsrunloop ios

12
推荐指数
1
解决办法
6406
查看次数

React Native:ScrollView中的TouchableOpacity onPress问题

我正在运行反应本机0.24.1并且<TouchableOpacity>当它放在一个组件内时我遇到了组件的问题<ScrollView>.

它的onPress事件很好,但有一个特殊情况,他们没有.如果<TouchableOpacity>你有一个组件<TextInput>,并且当前焦点在<TextInput>盒子上,那么你可以点击它<TouchableOpacity>,你会看到它的onPress事件不会被触发.

至少你第一次这样做.一旦焦点<TextInput>不再存在,您现在可以按下该<TouchableOpacity>组件,其onPress事件将会正常启动.

请注意,如果<TouchableOpacity>组件放在一个<View>而不是<ScrollView>一切按预期工作,并且上述问题不适用.

以下是一些演示此问题的代码:

const React = require('react-native');
const {
  Component,
  Dimensions,
  View,
  ScrollView,
  Text,
  TextInput,
  TouchableOpacity,
} = React;


// ----------------------------------------------------------------------------
class TouchableOpacityTest extends Component {
  constructor(props, context) {
    super(props, context);
    this.state = {count_onPress:0,count_onPressIn:0,count_onPressOut:0,count_onLongPress:0};
  }
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  onPressEvent(what,e) {
    console.log('what:',what);
    let newState = {};
    newState['count_'+what] = ++this.state['count_'+what];
    this.setState(newState);
  }
  // …
Run Code Online (Sandbox Code Playgroud)

android scrollview react-native

12
推荐指数
2
解决办法
7428
查看次数

如何使用子节点创建自定义React Native组件

我想在纯JavaScript中创建一个React Native组件,由其他组件组成,如TouchableOpacityText.我的应用程序中有几个按钮由两个组件组成,所以我认为学习如何创建自己的组件以更好地重用代码会很好.

完成的组件应该看起来或多或少像这样:

<Button>
  Tap me!
</Button>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止为该组件制作的代码:

class Button extends Component {
  render () {
    <TouchableOpacity style={styles.button}>
      <Text style={styles.textButton}>
      </Text>
    </TouchableOpacity>
  }
};
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何Tap me!在组件中使用内部子文本,我真的不知道如何让我的组件接受自定义道具TouchableOpacityText道具.

PS:我知道有一些像这样的React Native组件,但我更喜欢创建自己的组件,以便了解如何构建这种自定义组件.另外,React Native很棒但是我找不到如何在他们的文档中构建这样的东西,我认为对于从React开始的人来说这是一个非常有趣的练习.

ecmascript-6 reactjs react-native

11
推荐指数
1
解决办法
3万
查看次数

从底部加载UITableView

我试图模仿iMessage泡沫文本行为UITableView.为了始终滚动到底部我正在使用scrollToRowAtIndexPathviewDidLoadviewDidAppear.这是因为当viewDidLoad调用该方法时,该表尚未完全加载,因此我需要额外的滚动viewDidAppear.这段代码就是诀窍.但是,我想要的不是动画滚动(设置animatedNO不解决此问题),我希望表格始终从底部显示,而不是加载表格然后转到最后一行.

这可能吗?我找不到任何完全符合所需行为的解决方案.

iphone uitableview ios ios5

7
推荐指数
2
解决办法
1万
查看次数

从设备删除应用后,无法使用nil模型创建NSPersistentStoreCoordinator

'Cannot create an NSPersistentStoreCoordinator with a nil model'从设备上删除我的应用程序后收到错误.我在iPad设备上测试iPhone应用程序.我已经把这段代码检查我是否有文件AppDelegate.m:

- (NSManagedObjectModel *)managedObjectModel {
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Name" withExtension:@"momd"];
    if ([[NSFileManager defaultManager] fileExistsAtPath:[modelURL path]]) {
        NSLog(@"%@", [modelURL path]); //This is printed because file exists
    }
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return __managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)

问题是[NSManagedObjectModel initWithContentsOfURL]返回零值.我做了以下事情,没有成功:

  1. 使用此更改managedObjectModel实例化 __managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
  2. 清理构建文件夹和清理项目
  3. 重启Xcode
  4. 重启电脑
  5. 将"妈妈"改为"妈妈"
  6. .xcdatamodeld 在Copy Bundle Resources和Compile Sources中
  7. .xcdatamodeld多次重命名并清理和关闭Xcode项目
  8. 关闭并打开设备
  9. 已删除的文件夹: $ cd /Users/john/Library/Developer/Xcode/DerivedData
  10. 更改了sqlite名称以强制生成数据库 …

iphone xcode core-data ios

6
推荐指数
1
解决办法
1万
查看次数

调试时,iOS模拟器无法获取自定义位置

更新到Xcode 5.0.2后,似乎iOS模拟器自定义位置选项无法正常工作.当我提示这个

iOS模拟器7.0.3中的自定义位置

然后重新打开自定义位置对话框

iOS模拟器7.0.3中的自定义位置失败

我结束了没有小数的lat/lon值.此外,如果我提示.而不是逗号,有时对话框会用逗号替换该点,有时会删除小数值.我试过关闭模拟器,改变硬件并重新启动Xcode没有结果.

xcode ios ios-simulator

5
推荐指数
1
解决办法
4831
查看次数