我有一个看起来像这样的FlastList:
<FlatList
pagingEnabled={true}
horizontal={true}
showsHorizontalScrollIndicator={false}
data={[ {key:"A"}, {key:"B"} ]}
renderItem={ ({item, index}) => <MyComponent /> }
/>
Run Code Online (Sandbox Code Playgroud)
我有组件的宽度,所以一次只能在屏幕上显示一个页面.如何确定当前页面是什么(或者显示当前组件)?
我正在评估使用Google Cloud和Google App Engine来购买我们公司的新产品.我正在尝试修改本教程以使用Postgres而不是MySQL:
https://cloud.google.com/python/django/flexible-environment
虽然我能够在本地成功连接到数据库,但是当我尝试生产时,我收到以下500错误:
OperationalError at /admin/login/
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/<project_name_hidden>:us-central1:<database_id_hidden>/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
为了连接到Postgres,我对示例项目进行了三处更改.我在app.yaml中有这个片段:
beta_settings:
cloud_sql_instances: <project_name_hidden>:us-central1:<database_id_hidden>
Run Code Online (Sandbox Code Playgroud)
我在settings.py中有这个片段:
# [START dbconfig]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polls',
'USER': '<db_user_name_hidden>',
'PASSWORD': '<db_password_hidden>',
'PORT': '5432',
}
}
# In the flexible environment, you connect to CloudSQL using a unix socket.
# Locally, you can use the CloudSQL proxy to proxy …
Run Code Online (Sandbox Code Playgroud) python postgresql google-app-engine google-cloud-sql google-app-engine-python
我在 Django 单元测试中遇到了不一致的行为。在我使用 sqlite 的开发机器上,如果我分别在我的两个应用程序上运行测试,测试通过,但如果我一次运行manage.py test
测试所有内容,我开始在两个测试中一致地获得单元测试失败。
在我使用 Postgres 的临时服务器上,我有一个特定的测试,它在单独测试时有效(例如manage.py test MyApp.tests.MyTestCase.testSomething
),但在运行整个测试用例时失败(例如manage.py test MyApp.tests.TestCase
)。
其他相关的 StackOverflow 问题似乎有两种解决方案:
我两个都试了都没用。出于沮丧,我也尝试使用 django-nose,但我看到了同样的错误。我在 Django 1.6 上。
假设我有这样的 Django 模型:
class Book(models.Model):
title = models.CharField(max_length=150)
author = models.CharField(max_length=150)
class Chapter(models.Model):
book = models.ForeignKey(Book, related_name='chapters')
title = models.CharField(max_length=150)
page_num = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
和 Django Rest Framework 类,如下所示:
class ChapterSerializer(serializers.ModelSerializer):
class Meta:
model = Chapter
fields = ('id', 'title', 'page_num')
class BookSerializer(serializers.ModelSerializer):
chapters = ChapterSerializer(many=True)
class Meta:
model = Book
fields = ('id', 'title', 'author', 'chapters')
def create(validated_data):
chapters = validated_data.pop('chapters')
book = Book(**validated_data)
book.save()
serializer = ChapterSerializer(data=chapters, many=True)
if serializer.is_valid(raise_exception=True):
chapters = serializer.save()
class BookCreate(generics.CreateAPIView):
serializer = BookSerializer(data=request.data)
if …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关setState的ReactJS文档.具体来说,这一行:
永远不要直接改变this.state,因为之后调用setState()可能会替换你所做的突变.把this.state看作是不可变的.
但是在我的代码中,我做了这样的事情:
var x = this.state.x;
x.y.z.push("foo"); // z is a list
this.setState({x:x});
Run Code Online (Sandbox Code Playgroud)
此代码似乎正常工作并正确更新状态.但根据文件,我违反了规则.这种方法有什么问题?有性能问题吗?比赛条件?我会被Facebook开发团队骂?理想情况下,我想避免不可变性助手和所有其他疯狂,并保持简单.
为什么这个VirtualizedList只渲染前应该渲染365的前10个项?如果我传递一个data
包含10个以上项目的变量,它可以正常工作,但在使用该getItem
方法时会失败.
export default class ListTest extends Component {
render() {
return (
<View>
<VirtualizedList
initialNumberToRender={20}
windowSize={21}
getItemCount={(data) => 365}
getItem={(data, index) => {
return { key: index };
}}
keyExtractor={(item, index) => {
return item.key;
}}
renderItem={({ item, index }) => {
return (
<View style={{height:50}}>
<Text>{item.key}</Text>
</View>
);
}}
/>
</View>
);
}
}
Run Code Online (Sandbox Code Playgroud)