useState 即使数据的值没有改变,也总是触发更新。
这是问题的工作演示:demo
我正在使用useState钩子来更新一个对象,我试图让它只在该对象中的值发生变化时才更新。因为 React 使用Object.is比较算法来决定什么时候应该更新;具有等效值的对象仍然会导致组件重新渲染,因为它们是不同的对象。
前任。即使有效载荷的值保持不变,该组件也将始终重新渲染{ foo: 'bar' }
const UseStateWithNewObject = () => {
const [payload, setPayload] = useState({});
useEffect(
() => {
setInterval(() => {
setPayload({ foo: 'bar' });
}, 500);
},
[setPayload]
);
renderCountNewObject += 1;
return <h3>A new object, even with the same values, will always cause a render: {renderCountNewObject}</h3>;
};
Run Code Online (Sandbox Code Playgroud)
有没有我可以shouldComponentUpdate用钩子实现类似的东西来告诉反应只在数据更改时重新渲染我的组件?
我在我的项目中使用django rest-framework,(DRF),令牌认证来创建用户时创建令牌.一切都很好,直到我从DRF文档添加这一行:
url(r'^api-token-auth/', 'rest_framework.authtoken.views.obtain_auth_token'),
Run Code Online (Sandbox Code Playgroud)
创建一个端点,在正确发布用户名和密码后返回用户的令牌.
它抛出此错误:
ImportError: No module named rest_framework.authtoken
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为DRF在这条线上很好,所以它必须包含在我的PYTHONPATH中.
我还运行python manage.py syncdb了适当的迁移.
知道什么可能是错的吗?
Settings.py:
THIRD_PARTY_APPS = (
'south', # Database migration helpers:
'crispy_forms', # Form layouts
'avatar', # for user avatars
'rest_framework', # for rest
'django_rq', # for aysnc
'rest_framework_swagger', # for exploring the api
'rest_framework.authtoken',
)
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
Run Code Online (Sandbox Code Playgroud)
完整堆栈跟踪:
Unhandled exception in thread started by <function wrapper at 0x1046096e0>
Traceback (most recent call last):
File "/Users/admin/dev/ncla-web/env/lib/python2.7/site-packages/django/utils/autoreload.py", line 93, in …Run Code Online (Sandbox Code Playgroud) 我正在尝试将两个相对较小的数据集放在一起,但合并提出了一个MemoryError.我有两个国家贸易数据汇总数据集,我正在尝试合并密钥年份和国家,因此数据需要具有特殊性.遗憾的是concat,这个问题的使用和性能优势是不可能的,正如在这个问题的答案中所看到的:MemoryError与Python中的pandas大合并.
这是设置:
尝试合并:
df = merge(df, i, left_on=['year', 'ComTrade_CC'], right_on=["Year","Partner Code"])
Run Code Online (Sandbox Code Playgroud)
基本数据结构:
一世:
Year Reporter_Code Trade_Flow_Code Partner_Code Classification Commodity Code Quantity Unit Code Supplementary Quantity Netweight (kg) Value Estimation Code
0 2003 381 2 36 H2 070951 8 1274 1274 13810 0
1 2003 381 2 36 H2 070930 8 17150 17150 30626 0
2 2003 381 2 36 H2 0709 8 20493 20493 635840 0
3 2003 381 1 36 H2 0507 …Run Code Online (Sandbox Code Playgroud) 我有一个passwords.py我需要推送到Heroku我的应用程序工作,但我不能将它提交到我的公共git仓库,因为那时任何人都可以查看我的密码.
密码是令牌/ secert_key的/ other_api_keys,以允许我的应用程序验证其对第三方api的请求.我将它们存储在base64编码中passwords.py,但是如果我将它推送到git编码,任何人都可以很容易地看到密码b64decode().
如何将我的密码文件推送到Heroku而不包含在我的公共git仓库中?
要么
如何在公共git仓库中安全地存储我的密码?
推单个文件的Git似乎不是一个选择.虽然使用任何类似的方法来编码/解码密码只会给我一种虚假的安全感.关于如何解决它的任何想法?谢谢!
我有几个'过去'和'现在'变量,我想执行一个简单的百分比变化' 行 '.例如:((exports_now - exports_past)/exports_past)).
这两个问题实现了这一点,但是当我尝试类似的方法时,我得到一个错误,我的函数增量获得了一个未知参数axis.
exports_ past exports_ now imports_ past imports_ now ect.(6 other pairs)
.23 .45 .43 .22 1.23
.13 .21 .47 .32 .23
0 0 .41 .42 .93
.23 .66 .43 .22 .21
0 .12 .47 .21 1.23
Run Code Online (Sandbox Code Playgroud)
在第一个问题的答案之后,
def deltas(row):
'''
simple pct change
'''
if int(row[0]) == 0 and int(row[1]) == 0:
return 0
elif int(row[0]) == 0:
return np.nan
else:
return ((row[1] - row[0])/row[0]) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的Django项目运行Django中包含的交互式Werkzeug调试器.python manage.py runserver_plus从命令行执行以使用调试器启动服务器后,我收到错误:
Unknown command: 'runserver_plus'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)
我正在使用virtualenv.以下是我安装的内容:
Django==1.5.2
Werkzeug==0.9.3
argparse==1.2.1
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)
看完Django文档和这个问题后,
如何在Heroku上托管的Django项目中使用Werkzeug交互式跟踪调试器?
即使我只是尝试在本地调试我的项目,一切都应该工作正常.我安装了Django,我安装了Werkzeug工具(即使我可能不需要),而且我正在运行正确的命令.
什么可能出错?这应该是一个非常直接的行动.
考虑将这三个版本附加li到ul:
天真版本(慢20%):
var ul = document.getElementById('targetUl');
for (var i = 0; i < 200; i++) {
var li = document.createElement('li');
li.innerHTML = Math.random();
ul.appendChild(li);
}
Run Code Online (Sandbox Code Playgroud)
使用JavaScript片段(慢4%):
var ul = document.getElementById('targetUl'),
fragment = document.createDocumentFragment();
for (var i = 0; i < 200; i++) {
var li = document.createElement('li');
li.innerHTML = Math.random();
fragment.appendChild(li);
}
ul.appendChild(fragment);
Run Code Online (Sandbox Code Playgroud)
附加到DOM中尚未存在的元素(快1.26%):
var ul = document.createElement('ul'),
div = document.getElementById('targetDiv');
for (var i = 0; i < 200; i++) {
var li = document.createElement('li');
li.innerHTML …Run Code Online (Sandbox Code Playgroud) 我正在关注的Angular.io documenation一旦应用程序在浏览器中运行,角2抛出一个写有角2.一个简单的"Hello World"应用程序TypeError从angular2/src/browser_adapter.js.
一切似乎都正确设置.知道问题是什么吗?
安慰:
TypeError: Array.from is not a function
at createArrayFromMap (http://localhost:3000/node_modules/angular2/src/facade/collection.js:61:42)
at Function.MapWrapper.values (http://localhost:3000/node_modules/angular2/src/facade/collection.js:100:47)
at _createListOfBindings (http://localhost:3000/node_modules/angular2/src/di/injector.js:769:36)
at Function.Injector.resolve (http://localhost:3000/node_modules/angular2/src/di/injector.js:403:16)
at Function.Injector.resolveAndCreate (http://localhost:3000/node_modules/angular2/src/di/injector.js:420:41)
at _createAppInjector (http://localhost:3000/node_modules/angular2/src/core/application_common.js:291:39)
at http://localhost:3000/node_modules/angular2/src/core/application_common.js:257:31
at Zone.run (http://localhost:3000/node_modules/angular2/bundles/angular2.js:118:17)
at Zone.run (http://localhost:3000/node_modules/angular2/src/core/zone/ng_zone.js:165:42)
at NgZone.run (http://localhost:3000/node_modules/angular2/src/core/zone/ng_zone.js:112:40)BrowserDomAdapter.logError @ :3000/node_modules/angular2/src/dom/browser_adapter.js:71
Run Code Online (Sandbox Code Playgroud)
all.babel.js(符合es5 all.js):
import {Component, View, bootstrap} from 'angular2/angular2'
@Component({
selector: 'helloworld'
})
@View({
template: `<h1>Hello World!</h1>`
})
class HelloWorld {
}
bootstrap(HelloWorld)
Run Code Online (Sandbox Code Playgroud)
index.html的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Angular 2 Hello World</title> …Run Code Online (Sandbox Code Playgroud) 我正在使用@Yauhen Yakimovich在此问题中使用的方法:
具有模型字段,该模型字段是对不同模型的计算。
FieldError: Cannot resolve keyword 'rating' into field. Choices are: _rating
Run Code Online (Sandbox Code Playgroud)
当我尝试访问它时,rating模型字段inst被我的rating属性正确隐藏和覆盖,导致错误。
我的模特:
class Restaurant(models.Model):
...
...
@property
def rating(self):
from django.db.models import Avg
return Review.objects.filter(restaurant=self.id).aggregate(Avg('rating'))['rating__avg']
Run Code Online (Sandbox Code Playgroud)
Yauhen的回答中的模型:
class MyModel(models.Model):
__foo = models.CharField(max_length = 20, db_column='foo')
bar = models.CharField(max_length = 20)
@property
def foo(self):
if self.bar:
return self.bar
else:
return self.__foo
@foo.setter
def foo(self, value):
self.__foo = value
Run Code Online (Sandbox Code Playgroud)
关于如何正确隐藏rating字段和定义@property技术的任何想法?
我正在使用查询order_by()来呼叫rating。order_by()在数据库级别,并且不了解我的财产。灵魂,请使用Python进行排序:
sorted(Restaurant.objects.filter(category=category[0]), key=lambda …Run Code Online (Sandbox Code Playgroud) 我正在对我的家庭观点进行基本测试.从shell中记录客户端时,同一行代码在使用测试套件时无法记录客户端.
使用Django测试套件时记录客户端的正确方法是什么?
要么
知道为什么客户端没有使用我当前的方法登录吗?
壳牌测试:
import unittest
from django.test.client import Client
from django.test.utils import setup_test_environment
setup_test_environment()
client = Client()
login = client.login(username='agconti', password='password')
# login --> evals to True
Run Code Online (Sandbox Code Playgroud)
Django测试套件:
#### View Tests ####
import unittest
from django.test.client import Client
from shopping_cart.models import Store, Order, Item, Transaction
class Home_ViewTest(unittest.TestCase):
def setUp(self):
self.client = Client()
# login user
login = self.client.login(username='agconti', password='password')
# Check login
self.assertEqual(login, True)
def test_details(self):
# get the home view
response = self.client.get('/')
self.assertEqual(response.status_code, 200)
# Check …Run Code Online (Sandbox Code Playgroud) python ×7
django ×4
javascript ×3
pandas ×2
angular ×1
debugging ×1
git ×1
heroku ×1
merge ×1
react-hooks ×1
reactjs ×1
unit-testing ×1
werkzeug ×1