小编Bog*_*gin的帖子

如何使用Jest测试输出是随机的函数?

如何使用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)

javascript jestjs

18
推荐指数
4
解决办法
8789
查看次数

SVG作为图标字体的替代品

对于我目前的工作流程,我使用Icomoon生成的标志性网页字体.这是一种非常简单有趣的技术,具有明显的优势:

  • 图标的行为就像任何其他的字形,所以任何文字CSS变换可以以自然的方式,如适用于它text-shadow,text-decoration,color等.
  • 易于重用,只需添加font-family元素.

但它有重大缺陷不让我入睡.

  • 无论曲线如何与像素网格对齐,字体图标都是模糊的.更不用说糟糕的Windows渲染.
  • 很难在字体中添加新的图标,特别是当制作矢量源字体不可用甚至丢失时.
  • 它需要大量不同的字体版本(woff,eot,ttf)才能获得可接受的跨浏览器支持.
  • 最后,字体根本不适用于图形(特别是不是单色),似乎不是<span class="icon"></span>为此目的使用虚拟空和非语义的正确方法.

嗯,显而易见的替代方案是SVG,它没有提到的缺点.但是它有自己的缺点,不容易让我使用它.

  • 在我们的HTTP/1.1时代,很多小文件都是不可接受的.
  • 创建图标修改并不是一件容易的事,需要手动编辑,这对我们的just-type-npm-install时代来说也很奇怪.

我已经搜索了一些npm软件包,由于某些原因我不满意.

所以,我问你的建议如何管理这个简单而常规的任务.是否有生产和可靠的方法来生成SVG精灵与旧浏览器的原始图标和位图后备的修改变体?

css fonts frontend svg glyphicons

11
推荐指数
1
解决办法
1267
查看次数

JavaScript 中的原型继承到底是如何工作的?

I\xe2\x80\x99m 仍然没有完全理解 JavaScript 中的继承二分法(原型与经典)。

\n\n

如果它class只是原型上的语法糖,我应该如何对其进行脱糖?

\n\n

class您可以向我展示使用类和原型(即没有& )创建 React 元素的不同方法吗React.createClass

\n\n

那么,有没有办法使用 Native 来获取有状态组件Object.create

\n\n

像这样:

\n\n
const 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\'));\n
Run 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主要是关于继承吗? …

javascript inheritance reactjs

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

Immutable.js的实际案例是什么?

我理解JS中不变性的好处.但是使用特定的库无法获得任何优势.

在图书馆的主页上有一个很好的"不可变性的案例"段落,但对于"Immutable.js的案例"没有明确的答案.

我的意思是实现JS应用不可改变的,你应该只是为了保持简单的模式一样Object.prototype.assign,Array.prototype.concat即不直接发生变异数据,而是返回一个新的副本没有接触源.

为什么我更喜欢Immutable.List原生阵列,Immutable.MapES6 Map等等?

这是一个自我约束的问题吗?如果是这样,我应该忘记我的应用程序中的本机数据结构并仅使用Immutable.js替代方案吗?

这是一种实现更高生产力(在速度和硬件资源方面)的开销吗?

它是一种避免错误并降低应用程序状态复杂性的高级工具吗?

javascript immutability immutable.js

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

将对象简写作为道具传递给React组件的方法是什么?

将对象短手作为道具传递给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运算符不是一个选项,创建一个中间对象根本不会减少额外的代码.

jsx reactjs

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

如何以最扁平的方式为Redux标准化对象数组?

谨防!这个问题可能令人困惑并且无关紧要,因为我对错误原因的假设是错误的,问题出在减速器上,而不是我代表数据的方式。

因此,问题的正确答案是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)

reactjs redux normalizr

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

如何扩展create-react-app?

有没有办法create-react-app用我自己的库,webpack配置,dotfiles等扩展精彩,但保持它是最新的?

我的意思是,我想要eject它,然后根据我的需要进行改进,但是获得最新的更新,没有大的痛苦,即手动跟踪回购,寻找差异,复制和粘贴等等.

reactjs create-react-app

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

为什么`void 0`可能比"undefined""更快"?

只是潜伏在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 performance

0
推荐指数
1
解决办法
164
查看次数