如何使用Jest测试输出是随机的函数?像这样:
import cuid from 'cuid';
const functionToTest = (value) => ({
[cuid()]: {
a: Math.random(),
b: new Date().toString(),
c: value,
}
});
Run Code Online (Sandbox Code Playgroud)
所以输出functionToTest('Some predictable value')将是这样的:
{
'cixrchnp60000vhidc9qvd10p': {
a: 0.08715126430943698,
b: 'Tue Jan 10 2017 15:20:58 GMT+0200 (EET)',
c: 'Some predictable value'
},
}
Run Code Online (Sandbox Code Playgroud) 对于我目前的工作流程,我使用Icomoon生成的标志性网页字体.这是一种非常简单有趣的技术,具有明显的优势:
text-shadow,text-decoration,color等.font-family元素.但它有重大缺陷不让我入睡.
<span class="icon"></span>为此目的使用虚拟空和非语义的正确方法.嗯,显而易见的替代方案是SVG,它没有提到的缺点.但是它有自己的缺点,不容易让我使用它.
我已经搜索了一些npm软件包,由于某些原因我不满意.
所以,我问你的建议如何管理这个简单而常规的任务.是否有生产和可靠的方法来生成SVG精灵与旧浏览器的原始图标和位图后备的修改变体?
I\xe2\x80\x99m 仍然没有完全理解 JavaScript 中的继承二分法(原型与经典)。
\n\n如果它class只是原型上的语法糖,我应该如何对其进行脱糖?
class您可以向我展示使用类和原型(即没有& )创建 React 元素的不同方法吗React.createClass?
那么,有没有办法使用 Native 来获取有状态组件Object.create?
像这样:
\n\nconst Hello = Object.create(React.Component.prototype, {\n componentDidMount: {\n value: function() {\n alert(\'Mounted\');\n }\n },\n render: {\n value: function() {\n return <div>I love StackOverflow community! It is so helpful and friendly</div>;\n }\n }\n});\n\nReactDOM.render(<Hello />, document.getElementById(\'root\'));\nRun Code Online (Sandbox Code Playgroud)\n\n由于内部 lib\xe2\x80\x99s 的限制,似乎这样的东西不会 \xe2\x80\x99 工作。但为什么我们不能\xe2\x80\x99 更自然地使用 JavaScript 的原型性质呢?
\n\n有\xe2\x80\x99s来自官方文档的注释: https: //facebook.github.io/react/docs/composition-vs-inheritance.html#so-what-about-inheritance
\n\n\n\n\n[...]我们还没有发现任何我们建议创建组件继承层次结构的用例
\n
但\xe2\x80\x99class主要是关于继承吗? …
我理解JS中不变性的好处.但是使用特定的库无法获得任何优势.
在图书馆的主页上有一个很好的"不可变性的案例"段落,但对于"Immutable.js的案例"没有明确的答案.
我的意思是实现JS应用不可改变的,你应该只是为了保持简单的模式一样Object.prototype.assign,Array.prototype.concat即不直接发生变异数据,而是返回一个新的副本没有接触源.
为什么我更喜欢Immutable.List原生阵列,Immutable.MapES6 Map等等?
这是一个自我约束的问题吗?如果是这样,我应该忘记我的应用程序中的本机数据结构并仅使用Immutable.js替代方案吗?
这是一种实现更高生产力(在速度和硬件资源方面)的开销吗?
它是一种避免错误并降低应用程序状态复杂性的高级工具吗?
将对象短手作为道具传递给React组件以减少相同命名密钥对的冗余重复的方法是什么?
以下是我想避免的一些示例:
const Comp = ( {a, b, c, d} ) => {
return (
<div>
<SubComp
a={a}
b={c}
d={d}
/>
<AnotherSubComp
a={a}
c={c}
/>
</div>
)
};
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
const Comp = ( {a, b, c, d} ) => {
return (
<div>
<SubComp {a, c, d} />
<AnotherSubComp {a, c} />
</div>
)
};
Run Code Online (Sandbox Code Playgroud)
Spread运算符不是一个选项,创建一个中间对象根本不会减少额外的代码.
谨防!这个问题可能令人困惑并且无关紧要,因为我对错误原因的假设是错误的,问题出在减速器上,而不是我代表数据的方式。
因此,问题的正确答案是jpdelatorre的答案,而 Joao的答案是关于错误本身的。
假设我有来自服务器的JSON响应,它是一组嵌套对象。如何弄平它以使商店处理尽可能容易?我试图使用这样的normalizr工具:
const imageSchema = new Schema('image', { idAttribute: 'id' });
const tooltipSchema = new Schema('tooltips', { idAttribute: 'id' });
imageSchema.define({
tooltips: arrayOf(tooltipSchema),
});
const initData = data.map(item => normalize(item, imageSchema));
Run Code Online (Sandbox Code Playgroud)
但是我相信我做错了,因为它没有太大帮助。存储仍然太复杂,因此我需要在reducer中使用一些递归的东西来更新状态。
此外,深层嵌套的状态也使得使用react-redux变得connect()非常困难,因为它仅进行了比较浅的比较。
响应的形状如下:
[
{
"id": 1,
"title": "Partridge",
"tooltips": [
{
"id": 10,
"x": 0.56,
"y": 0.59,
"content": "Jacky"
},
{
"id": 11,
"x": 0.08,
"y": 0.8,
"content": "Sarah"
}
]
},
{
"id": 2,
"title": "The Great Seal …Run Code Online (Sandbox Code Playgroud) 有没有办法create-react-app用我自己的库,webpack配置,dotfiles等扩展精彩,但保持它是最新的?
我的意思是,我想要eject它,然后根据我的需要进行改进,但是获得最新的更新,没有大的痛苦,即手动跟踪回购,寻找差异,复制和粘贴等等.
只是潜伏在140byte文档的奇怪和花哨的东西,发现这个:
void 0undefined比替代品更快但更长.
我懒得在Chrome控制台中检查,如下所示:
console.time('void');
for (let a = 0; a < 1e6; a++) {() => void 0};
console.timeEnd('void');
Run Code Online (Sandbox Code Playgroud)
与
console.time('undefined');
for (let a = 0; a < 1e6; a++) {() => undefined};
console.timeEnd('undefined');
Run Code Online (Sandbox Code Playgroud)
并没有发现任何区别.也许我的懒惰检查太懒了,或者只是关于缓慢的陈述不再相关.
我只是想知道JS引擎内部以及它是如何可能的?我们怎样才能谈论原语和运算符的速度?它是否正确且相关?这对我来说听起来有点奇怪.
javascript ×4
reactjs ×4
css ×1
fonts ×1
frontend ×1
glyphicons ×1
immutability ×1
immutable.js ×1
inheritance ×1
jestjs ×1
jsx ×1
normalizr ×1
performance ×1
redux ×1
svg ×1