小编Rem*_*ich的帖子

为什么我需要在 MobX 中使用 Context 或 Provider?

我正在尝试学习如何在 React 中使用 MobX,但我不明白为什么需要使用 Provider 或 Context,如果保持状态的对象永远不会改变,只有它的内容。

例如,我在 store.js 中有一个商店(一个随时间变化的简单计时器):

import { decorate, observable, action } from 'mobx';
import React from 'react';

class TheTimer {
    currentTick = 0; // In seconds since start

    tick = () => {
        this.currentTick = Math.floor(performance.now() / 1000);
    }
}

decorate(TheTimer, {
    currentTick: observable,
    tick: action
});

// Bare store
export const timerStore = new TheTimer();
// Store as React context
export const TimerStoreContext = React.createContext(timerStore);

// This makes the timer go
setInterval(timerStore.tick, 100);
Run Code Online (Sandbox Code Playgroud)

现在在组件中使用裸存储没有问题: …

reactjs mobx mobx-react

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

Django TestCase不在辅助数据库上使用事务

我正在使用Django 1.3.1.我有两个数据库,我的一些模型存在于一个数据库中,一些存在于另一个数据库中.这两个数据库都是contrib.gis.db.backends.postgis数据库.

令我惊讶的是,Django的TestCase并没有回滚我在测试之间在辅助数据库中所做的更改.

在下面的代码中,myproject.models.WellOwner是一个非常简单的模型,基本上只有一个字段"name".路由器说它应该在辅助数据库中.第一次测试中的断言成功,第二次测试失败:

from django.test import TestCase
from myproject.models import WellOwner

class SimpleTest(TestCase):
    def test1(self):
        WellOwner.objects.create(name="Remco")
        self.assertEquals(1, WellOwner.objects.count())  # Succeeds

class SimpleTest2(TestCase):
    def test2(self):
        # I would expect to have an empty database at this point
        self.assertEquals(0, WellOwner.objects.count())  # Fails!
Run Code Online (Sandbox Code Playgroud)

我假设Django将此包装在默认数据库的事务中,但不包含在辅助数据库上.这是一个已知的问题吗?有修复吗?也许在1.4?我的Google-fu失败了.

(如果我在设置中将DATABASE_ROUTERS更改为[],以便所有内容都进入同一个数据库,问题就会消失)

我将添加路由器的整个代码,以防它有用:

SECONDARY_MODELS = ('WellOwner', ...)

import logging
logger = logging.getLogger(__name__)


class GmdbRouter(object):
    """Keep some models in a secondary database."""

    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'gmdb':
            if model._meta.object_name in SECONDARY_MODELS:
                return 'secondary'

        return None

    def db_for_write(self, …
Run Code Online (Sandbox Code Playgroud)

python django multiple-databases

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

Redux 和 isFetching 中的顺序异步操作

我的 React 组件需要异步获取一些数据 A,然后根据其内容,发送第二个异步请求以获取数据 B。所有结果都存储在 Redux 中,我们使用 Redux-thunk。

页面上可能同时有多个组件都需要 A,因此很有可能它已经存在于 Redux 中;但另一个组件也可能正在获取它,然后isFetching是真的。我不想有多个相同的请求(尤其是因为浏览器取消了它们)。

https://github.com/reactjs/redux/issues/1676https://github.com/reactjs/redux/issues/723等顺序操作的解决方案提出了一种返回承诺的 redux-thunk,该承诺已经是如果对象已经存在,则已解决;例如:

function getA(uuid) {
    return (dispatch, getState) => {
        const currentA = getState().a[uuid];

        if (currentA) {
            // Return resolved promise with the already existing object
            return Promise.resolve(currentA);
        } else {
            // Return async promise
            return goFetchA(uuid).then(objectA => {
                dispatch(receivedA(uuid, objectA));
                return objectA;
            });
        }
    };
}

function getAthenB(uuidA, uuidB) {
    return dispatch => 
        dispatch(getA(uuidA)).then(
            objectA => dispatch(getB(objectA, uuidB)));
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。但是,如果状态同时包含对象和“isFetching”布尔值,我可以返回什么样的承诺?如果我们可以将请求的实际 …

redux redux-thunk react-redux

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

将实用程序脚本添加到 create-react-app React / Typescript 应用程序

我有一个使用 Typescript 创建的单页 React 应用程序create-react-app --typescript。源代码位于.ts.tsx文件位于src/.

现在我想创建一些实用程序脚本以在开发中使用。在本例中,从我们的生产服务器下载数据并将其上传到我的本地开发服务器,但这只是一个示例。这些脚本具有应用程序也具有的依赖项(如 API 客户端库),我想从应用程序导入各种常量和辅助函数。

在 create-react-app 的结构中是否有一个地方可以放置此类脚本并让它们工作?我希望能够打电话给他们npm run scriptname并让他们从应用程序导入。

(在我们的 Django 后端,我会将这些放入 Django 管理命令中,我正在寻找一种方法来制作类似的东西)

javascript typescript create-react-app

4
推荐指数
1
解决办法
519
查看次数

使用Celery Canvas,chord()和chain(group(),task)有什么区别

我们正在用Celery实施工作流程。首先,我们需要并行运行一些任务,当它们全部完成后,我们需要运行一个任务。

看来我们可以使用和弦或群组和链:

chord(tasks, task)
Run Code Online (Sandbox Code Playgroud)

group(tasks) | task
Run Code Online (Sandbox Code Playgroud)

两者之间的确切区别是什么?他们似乎做同样的事情。

python celery celery-canvas

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

从另一个numpy数组中删除一个numpy数组中的元素

我想从另一个不存在的numpy数组中减去元素。

例:

a = np.array([1,2,3,4])
b = np.array([1,2])
Run Code Online (Sandbox Code Playgroud)

结果:

[3, 4]
Run Code Online (Sandbox Code Playgroud)

python numpy python-3.x

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