我们目前正在从Relay转向React Apollo 2.1,而我正在做的事似乎很可疑.
上下文:只有在用户通过身份验证(通过API密钥)时才能呈现某些组件,因此有一个Authenticator组件可以保护树的其余部分.
在App.js,它被这样使用(显然下面的所有片段都是最小的例子):
import React from 'react';
import Authenticator from './Authenticator';
import MyComponent from './MyComponent';
export default function App({ apiKey }) {
return (
<Authenticator apiKey={apiKey}
render={({ error, token }) => {
if (error) return <div>{error.message}</div>;
if (token) return <MyComponent token={token} />;
return <div>Authenticating...</div>;
}}
/>
);
}
Run Code Online (Sandbox Code Playgroud)
如果身份验证成功,MyComponent则会进行呈现.
Authentication在第一次渲染/挂载时将身份验证突变发送到服务器,并相应地调用渲染道具.
Authentication.js看起来像这样:
import gql from 'graphql-tag';
import React from 'react';
import { Mutation } …Run Code Online (Sandbox Code Playgroud) 我对Python和Django很陌生,而且在Stack Overflow上是全新的,所以我希望我不会破坏任何规则,我尊重问题格式.
我正在尝试使用Django(Python 3.3.0,Django 1.5a1)实现自定义模型字段时遇到问题,我没有找到任何类似的主题,我实际上完全坚持这个...
所以有一个玩家,他有一手牌(卡).Hand继承自CardContainer,它基本上是带有一些(隐藏在这里)辅助函数的卡列表.这是相应的代码:
from django.db import models
class Card:
def __init__(self, id):
self.id = id
class CardContainer:
def __init__(self, cards=None):
if cards is None:
cards = []
self.cards = cards
class Hand(CardContainer):
def __init__(self, cards=None):
super(Hand, self).__init__(cards)
class CardContainerField(models.CommaSeparatedIntegerField):
__metaclass__ = models.SubfieldBase
def __init__(self, cls, *args, **kwargs):
if not issubclass(cls, CardContainer):
raise TypeError('{} is not a subclass of CardContainer'.format(cls))
self.cls = cls
kwargs['max_length'] = 10
super(CardContainerField, self).__init__(*args, **kwargs)
def to_python(self, value):
if not value:
return self.cls()
if …Run Code Online (Sandbox Code Playgroud) 这是一些背景.我正在使用用ES6编写的React和Immutable.js开发一个项目.我使用Babel和webpack.
我使用Mocha,Chai和jsdom编写了一些单元测试,因此可以在浏览器外执行.
问题是某些组件正在使用诸如需要图像之类的东西.这个东西由webpack通过特定的加载器处理.
因此,当在终端中运行测试时,由于这些未满足的要求,它们会失败.
我发现如何通过使用Karma解决这个问题(留下在浏览器之外运行测试的能力)并在运行测试之前编译源代码并使其成为webpack配置只是忽略图像加载器(使用null-loader).
那时,测试是通过Karma运行的,但是其中一些是失败的,而当它们通过终端运行时它们正在通过(我评论了那些有需求的行,只是为了测试的目的).
失败的测试都与Immutable.js有关,这意味着我正在尝试测试两个Immutable对象的相等性.
这是一个测试的例子:
it('handles SET_STATE', () => {
const initialState = Map();
const action = {
type : 'SET_STATE',
state : Map({
vote : Map({
pair : List.of('Trainspotting', '28 Days Later'),
tally : Map({ 'Trainspotting' : 1 })
})
})
};
const nextState = reducer(initialState, action);
expect(nextState).to.equal(fromJS({
vote: {
pair: ['Trainspotting', '28 Days Later'],
tally: { 'Trainspotting': 1 }
}
}));
});
Run Code Online (Sandbox Code Playgroud)
失败就是这样的:
1) handles SET_STATE
reducer
AssertionError: expected { Object (size, _root, ...) } …Run Code Online (Sandbox Code Playgroud) 我很难理解它是如何array_udiff运作的.
根据文件:
Run Code Online (Sandbox Code Playgroud)array_udiff ($array1, $array2, data_compare_func)[...]
data_compare_func如果第一个参数被认为是比上述第二分别小于,等于或大于函数必须返回一个整数比小于零,等于,或更大.
所以考虑这个功能:
function please_compare($a, $b) {
return $a !== $b;
};
Run Code Online (Sandbox Code Playgroud)
如果$ a等于$ B,该方法将返回0,否则为1(因为这个).
(这里没有-1返回,我觉得解释来自那里,但我可以比较价值不同,而不是一个比另一个更大.)
有人可以array_udiff在下面的片段中解释我的行为吗?我还包括了输出array_diff,这实际上是我期待的行为?
$array1 = array('a', 'b', 'c', 'd');
$array2 = array('a', 'b', 'c');
print_r(array_udiff($array1, $array2, 'please_compare'));
/* Returns:
Array
(
[0] => a
[1] => b
[3] => d
)
*/
print_r(array_diff($array1, $array2));
/* Returns:
Array
(
[3] => d
)
*/
Run Code Online (Sandbox Code Playgroud) 我试图了解为什么我的简单柴(使用柴不可变)测试失败。
it('should work', () => {
var currentState = Immutable.fromJS({
name: 'myName',
age: 20,
friends: []
});
var newState = currentState.merge({
name: 'someOtherName',
age: 30
});
expect(newState).to.equal(Immutable.fromJS({
name: 'someOtherName',
age: 30,
friends: []
}));
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我想我缺少了一些愚蠢的东西...
谢谢,阿米特。
假设有一个函数定义为:
def thingy(arg1):
pass
Run Code Online (Sandbox Code Playgroud)
根据书籍和PEP8(错误代码E211),我知道调用它的正确方法是:
thingy(true)
Run Code Online (Sandbox Code Playgroud)
但是,我在现有代码中也看到了以下形式:
thingy (true)
Run Code Online (Sandbox Code Playgroud)
除了反对PEP8,它是否有害?
特别是,它是否可以使用推荐的方式创建一个不会被抛出的不需要的bug /副作用?
我正在使用chai-immutablenpm模块进行测试.这是测试:
it("runs the test", () => {
const initialState = Map();
const entries = ["entry"];
const nextState = setEntries(initialState, entries);
expect(nextState).to.equal(fromJS({
entries : ["entry"]
}));
});
Run Code Online (Sandbox Code Playgroud)
这是setEntries功能
export function setEntries(state, entries) {
return state.set("entries", List(entries));
}
Run Code Online (Sandbox Code Playgroud)
这是什么ownerID?如何解决这个问题?
编辑:
我已经从头开始创建并重写了整个文件,但它确实有效.它与上一个文件完全相同.
仍然感兴趣为什么它发生....
我有一个奇怪的问题,我print_r($obj)在Joomla YOOtheme ZOO扩展中使用它返回一个空白页面.它只是充当die()!
它应该输出对象,但它不会.
请注意,print_r()它与其他一些对象和变量一起正常工作.
我在Windows上使用XAMPP.
有帮助吗?
在执行print_r()和var_dump(),该网页是空白的,没有错误,查看源代码所示:
<html>
<head></head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
错误报告已打开.
我有一个变量{{value.item_total }}在这个值执行499.00...但我想删除我的模板文件中的这个值..我怎么能这样做...有人建议我请..
immutable.js ×3
javascript ×3
python ×3
chai ×2
django ×2
php ×2
apollo ×1
arrays ×1
comparison ×1
joomla ×1
karma-mocha ×1
mocha.js ×1
node.js ×1
pep8 ×1
react-apollo ×1
reactjs ×1
templates ×1
webpack ×1
xampp ×1