从具有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)
这是一个更难阅读和推理的东西.所以我的问题是:为什么需要这个?将承诺作为回应价值有什么意义?有没有更好的方法来处理这个?
我遇到了登录用户和Django的问题ModelForm.我有一个名为类_Animal_具有ForeignKey向User以及与年龄,种族,动物的一些数据,等等.
用户可以添加动物的分贝,我要跟踪每个动物的作者,所以我需要添加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) 我已经定义了自定义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.
目前,React Native动态地需要具有特定文件扩展名的运行平台的文件,*.ios.js或*.android.js.但是,在测试环境中运行此代码时,我们会收到require错误,因为require('./module')在文件树中找不到模块,如下所示:
module.ios.jsmodule.android.js我们如何在测试环境中处理这个问题?
我需要在iOS应用程序中定期轮询来自服务器的数据.我需要在一个线程中每隔10秒执行一次,以保持UI可用.当用户登录时,将触发此函数.我正在考虑使用NSRunLoopwith NSTimer来实现此功能,并且可能用于AFNetworking获取JSON数据.
这是正确的方法吗?应该使用GCD吗?
我正在运行反应本机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) 我想在纯JavaScript中创建一个React Native组件,由其他组件组成,如TouchableOpacity和Text.我的应用程序中有几个按钮由两个组件组成,所以我认为学习如何创建自己的组件以更好地重用代码会很好.
完成的组件应该看起来或多或少像这样:
<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!在组件中使用内部子文本,我真的不知道如何让我的组件接受自定义道具TouchableOpacity和Text道具.
PS:我知道有一些像这样的React Native组件,但我更喜欢创建自己的组件,以便了解如何构建这种自定义组件.另外,React Native很棒但是我找不到如何在他们的文档中构建这样的东西,我认为对于从React开始的人来说这是一个非常有趣的练习.
我试图模仿iMessage泡沫文本行为UITableView.为了始终滚动到底部我正在使用scrollToRowAtIndexPath时viewDidLoad和viewDidAppear.这是因为当viewDidLoad调用该方法时,该表尚未完全加载,因此我需要额外的滚动viewDidAppear.这段代码就是诀窍.但是,我想要的不是动画滚动(设置animated为NO不解决此问题),我希望表格始终从底部显示,而不是加载表格然后转到最后一行.
这可能吗?我找不到任何完全符合所需行为的解决方案.
'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]返回零值.我做了以下事情,没有成功:
__managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];.xcdatamodeld 在Copy Bundle Resources和Compile Sources中.xcdatamodeld多次重命名并清理和关闭Xcode项目$ cd /Users/john/Library/Developer/Xcode/DerivedData更新到Xcode 5.0.2后,似乎iOS模拟器自定义位置选项无法正常工作.当我提示这个

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

我结束了没有小数的lat/lon值.此外,如果我提示.而不是逗号,有时对话框会用逗号替换该点,有时会删除小数值.我试过关闭模拟器,改变硬件并重新启动Xcode没有结果.
ios ×4
iphone ×3
react-native ×3
ecmascript-6 ×2
javascript ×2
xcode ×2
android ×1
core-data ×1
django ×1
django-forms ×1
django-views ×1
es6-promise ×1
fetch-api ×1
flowtype ×1
ios5 ×1
jestjs ×1
nsrunloop ×1
python ×1
reactjs ×1
scrollview ×1
testing ×1
uitableview ×1