小编Ali*_*ali的帖子

如何在ReactJs中正确使用componentWillUnmount()

从官方教程:

componentWillUnmount()在卸载和销毁组件之前立即调用.在此方法中执行任何必要的清理,例如使计时器无效,取消网络请求或清除在中创建的任何DOM元素componentDidMount

我理解"使计时器无效".fetch可以中止AbortController.但我不明白"清理任何创建的DOM元素componentDidMount",我能看到这种情况的例子吗?

javascript reactjs

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

Django Rest Framework POST更新如果存在或创建

我是DRF的新手.我阅读了API文档,也许它没有注意到,但我找不到一个方便的方法来做到这一点.

我有一个Answer对象与问题有一对一的关系.

在前端我曾经使用POST方法创建一个发送到api/answers的答案,并将PUT方法更新发送到例如api/answers/24

但我想在服务器端处理它.我只会向api/answers发送POST方法,如果对象存在,DRF将根据answer_id或question_id(因为它是一对一)进行检查.如果是,它将更新现有的,如果不是,它将创建一个新的答案.

我应该在哪里实现它,我无法弄明白.在序列化程序或ViewSet或其他内容中覆盖create?

我的模型,序列化器和视图如下:

class Answer(models.Model):
    question = models.OneToOneField(
        Question, on_delete=models.CASCADE, related_name="answer"
    )
    answer = models.CharField(
        max_length=1, choices=ANSWER_CHOICES, null=True, blank=True
    )


class AnswerSerializer(serializers.ModelSerializer):
    question = serializers.PrimaryKeyRelatedField(
        many=False, queryset=Question.objects.all()
    )

    class Meta:
        model = Answer
        fields = ("id", "answer", "question")


class AnswerViewSet(ModelViewSet):
    queryset = Answer.objects.all()
    serializer_class = AnswerSerializer
    filter_fields = ("question", "answer")
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

将默认值的Django字段迁移到PostgreSQL数据库

https://docs.djangoproject.com/en/1.10/topics/migrations/

它说:“就模式支持而言,PostgreSQL是这里所有数据库中功能最强大的;唯一的警告是,添加具有默认值的列将导致表的完全重写,时间长短与表的大小成正比。

“因此,建议您始终使用null = True创建新列,因为这样将立即添加它们。”

我问我是否正确。据我了解,我应该先创建一个null = True且没有默认值的字段,然后迁移它,然后再给它一个默认值并再次迁移它,这些值将立即添加,但是否则整个数据库将被重写并Django迁移不想自己解决问题吗?

python django postgresql django-migrations

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

对具有负数和正数的字符串数组进行排序

首先,我找不到解决整个问题的问题。

我曾经比较过这样的数组:

array.sort((a, b) => {
    return a.localeCompare(b, undefined, {numeric: true, sensitivity: 'base'})
})
Run Code Online (Sandbox Code Playgroud)

但是我意识到它不适用于像这样的数组['a', 'A', 'B', -1.50', '0', '1.50', '-2', '2']

预期输出为:['-2', '-1.50', '0', '1.50', '2', 'A', 'a', 'B']

我有一些肮脏的想法可以实现它。但是也许有一种干净便捷的方法。

javascript

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

回调到异步等待

我一直在尝试使用这个库:https : //github.com/xkeshi/image-compressor

从那里的例子:

new ImageCompressor(file, {
    quality: .6,
    success(result) {
      ...
    },
    error(e) {
      ...
    },
  });
Run Code Online (Sandbox Code Playgroud)

我想将此函数包装在一个名为 compress 的异步函数中以使用它,例如:

const compressed file = await compress(file)
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 es6-promise

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

Django Rest Framework递归嵌套父级序列化

我有一个带有自参考字段的模型,称为parent。模型:

class Zone(BaseModel):
    name = models.CharField(max_length=200)
    parent = models.ForeignKey('self', models.CASCADE, blank=True, null=True, related_name='children')

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

序列化器:

class ZoneSerializer(ModelSerializer):
    parent = PrimaryKeyRelatedField(many=False, queryset=Zone.objects.all())
    parent_disp = StringRelatedField(many=False, source="parent")

    class Meta:
        model = Zone
        fields = ('id', 'name', 'parent', 'parent_disp')
Run Code Online (Sandbox Code Playgroud)

现在,我要序列化区域的父级及其父级和它的父级,直到父级为none。我发现了针对孩子而不是父母的递归序列化方法。我怎样才能做到这一点?

python django recursion serialization django-rest-framework

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