小编Fuz*_*yma的帖子

获取子组件的状态

我正在使用react-draggabe.我喜欢通过将子组件包装到另一个子组件中来添加功能的想法<Draggable>.该组件管理自己的状态很酷.这样我就不必关心任何事情了.

但是:我需要在事件发生时获取拖动元素的当前位置(例如,用户单击另一个子组件中的某个按钮).我知道我可以使用onStop-handler并将新位置保存在父元素的状态中.但这是一个问题:我复制了可拖动组件的状态,因为我也将它保存在父组件中.我不想这样做.

这样做的反应方式是什么?
我是rect的新手,我想这是一个很好的解释.

reactjs

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

找到 svg 形状的中心

svgjs用来创建我的形状。如何找到 svg 形状的中心点并在那里添加元素?在我的情况下是一个红点。我在文档中找不到任何有关方法或在这种情况下有帮助的信息的信息。

javascript svg svg.js

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

根据类型保护推断函数的返回类型

我有以下定义:

function foo(arg: number[] | number) {
    if (Array.isArray(arg)) {
        return [1]
    }

    return 0
}
Run Code Online (Sandbox Code Playgroud)

我希望打字稿能够自动找出返回类型是什么。由于类型保护,isArray()它知道 arg 是否是一个 Array 并且可以将返回类型显示为number[]。但是, usingfoo(...)显示其返回值number[] | 0即使在传递数组时也是如此。

  foo([]).push() // error because push doesnt exist on type 0
Run Code Online (Sandbox Code Playgroud)

这是一个设计限制,一个错误,还没有实现,还是其他一些问题?

typescript

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

将Blob添加到dropzone.js队列而不是文件中

我使用dropzone.js上传文件。但是我的文件在上传之前已经过预处理。最后blob,我要上传一个。不幸的是,只有一种addFile()方法可用,而没有任何addBlob()方法。我知道我可以这样使用File构造函数:

new File([blob], 'filename', options)
Run Code Online (Sandbox Code Playgroud)

但构造函数在IE / Edge中不可用。

有什么办法可以将blob附加到dropzone.js队列吗?

javascript dropzone.js

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

在cmake之后没有makefile

我尝试使用ev3dev lego砖的c ++语言绑定:https://github.com/ddemidov/ev3dev-lang-cpp

说明如下:

mkdir build
cd build
cmake .. -DEV3DEV_PLATFORM=EV3
make
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows并且可以使用cmake和mingw.运行cmake后,它会在build目录中创建一些文件.但是:make中没有makefile可供选择.所以我想知道iam应该如何编译这些绑定

makefile cmake

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

在浏览器中重现文本边界框

在浏览器中使用 SVG 时,浏览器具有getBBox为您提供各种元素的边界框的功能。但是当涉及到文本元素时,我真的很困惑这个边界框是如何计算的。我知道 fontsize 是基于字体文件中指定的 em-Box 的。然而我的测试表明,这些都不会产生与 FF 或 Chrome 相同的结果(在 fontsize 1000 上仅相差几个像素):

fontSize != bbox-height
(ascender-descender)/unitsPerEm * fontSize != bbox-height
(unitsPerEm-descender)/unitsPerEm * fontSize != bbox-height
...maybe adding a fixed amount to ascender for accents? Like ?
Run Code Online (Sandbox Code Playgroud)

那么浏览器中文本的 bbox 高度背后的秘密是什么呢?

我什至尝试查看 FF 和 Chrome 的源代码,但找到计算所基于的正确位置本身就是一个挑战

// 编辑:响应评论:我想计算 svg 文本的 bbox,就像在浏览器中所做的那样(复制行为)。我需要知道正确计算 bbox 所需的字体度量以及用于计算的公式(宽度和高度就足够了)

javascript fonts svg bounding-box

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

BBox计算svg <g>元素

我刚刚遇到了一个弹跳箱计算的问题,似乎我还没有掌握全部真相.

首先,边界框被定义为最紧密的框,未转换的元素可以被包围.

我总是在印象中,对于团体而言,这意味着它基本上得到了所有孩子的边界框的联合.

但是,今天我遇到了这个:

<g id="outer">
  <g id="inner" transform="translate(100, 100)">
    <rect x="0" y="0" width="100" height="100" />
  </g>
</g>
Run Code Online (Sandbox Code Playgroud)

元素的边界框如下:

  • rect: x: 0, y: 0, w: 100, h: 100
  • #inner: x: 0, y: 0, w: 100, h: 100
  • #outer: x: 100, y: 100, w: 100, h: 100

我的期望是,所有的盒子都是相同的,但正如你所看到的,外盒不是内部元素的结合(在这种情况下,它将等于#inner的bbox).相反,它考虑了内部元素的转换.

那么,说一个组的bbox是其孩子的TRANSFORMED bbox的联盟是对的吗?或者更编程地说,所有getBoundingClientRect调用的并集(假设滚动为0因为getCoundingClientRect忽略滚动)?

我真的很感激链接指向我的规格的正确部分.

javascript svg bounding-box getboundingclientrect

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