【问题标题】:Cannot read property 'apply' of undefined Konva.js无法读取未定义 Konva.js 的属性“应用”
【发布时间】:2020-03-03 22:28:31
【问题描述】:

我正在尝试使用方法find 查找对象。它只是代码的一部分,只是为了演示问题。一般来说,我需要从Konva 框架的Shapes 数组中找到对象。我是在渲染功能组件后使用 refs 得到的。

import React, { useState, useEffect, useRef } from "react";
import Konva from "konva";
import { Stage, Layer, Text, Circle } from "react-konva";

import { ArrowComp } from "./Arrow";
import { useInterval } from "../hooks/useInterval";

const Graph = props => {
    const [data, setData] = useState({
        circles: ConvertMatrix(matrix).circles,
    });
        const circles = ref.current.find(".circle");
    const stageRef = useRef();
    useEffect(() => {
        const circles = stageRef.current.find(".circle");
        const finded = circles.find((circle) => circle.attrs.radius < 50)
    }, []);

    return (
        <Stage
            width={window.innerWidth}
            height={window.innerHeight}
            className="container"
            ref={stageRef}
        >
            <Layer>
                   <Circle
                      shadowBlur={10}
                      x={150}
                      y={200}

                      radius={circle.r || 40}
                      fill="yellow"
                      name={"circle"}
                      id={1}
                    /> 
                     <Circle
                      shadowBlur={10}
                      x={150}
                      y={150}
                      radius={40}
                      fill="yellow"
                      name={"circle"}
                      id={2}
                    />        
            </Layer>
        </Stage>
    );
};


ReactDOM.render(<Graph />, document.querySelector("#app"))

我在 lib 中遇到错误。是 konva 框架库吗?如何通过其他方式从数组中找到元素?

     16 |     var len = this.length, i;
  17 |     var args = [].slice.call(arguments);
  18 |     for (i = 0; i < len; i++) {
> 19 |         this[i][methodName].apply(this[i], args);
     | ^  20 |     }
  21 |     return this;
  22 | };

TypeError:无法读取未定义的属性“应用” 收藏。 [如发现]

这是我关于 StackOwerflow 的第一个问题,很抱歉问题的格式不完全。 我做了一个例子here

UPD:通过使用findIndex 解决了问题,并通过 circles[index] 获得了值。但是剩下 1 个问题:是库(框架)的错误吗?

【问题讨论】:

  • 什么是circles,它是一个对象数组吗?你有样品吗?
  • @Jayce444 是的,围绕它的对象数组。样品,我试图做到这一点,但我失败了。我无法将konva lib 连接到jsfiddle。如果你帮助我,我会成功的。谢谢
  • @Jayce444 我做了这个例子。您可以在我的帖子底部看到它。

标签: reactjs find react-konva konva


【解决方案1】:

您的 circles 变量不是数组。 stage.find(selectors) 返回 Konva.Collection。它的工作方式与 Array 略有不同。如果你想要一个数组,只需使用:

circles.toArray().find((circle) => circle.radius() < 50);

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2022-10-08
    • 2020-04-06
    • 2019-04-30
    相关资源
    最近更新 更多