javascript - Snap.select 在 React.js 中为空,但在原生 JavaScript 中不为空
问题描述
我正在尝试将脚本转换为 React.js。此脚本在没有 JS 的情况下在常规 HTML 页面上运行。但是,当我尝试在 React 中使用它时,它失败了。Snap.select
似乎不再起作用了。
在我的常规示例中,我只是使用库的 CDN 链接snapsvg
。snapsvg-cjs
可能是问题吗?我尝试了几种不同的snapsvg
npm 安装,但这是迄今为止最好的。
import React from 'react';
import ReactDOM from 'react-dom'
import 'bootstrap/dist/css/bootstrap.min.css';
import '../../style/App.scss';
import VideoPlayer from '../videoPlayer/VideoPlayer';
import $ from "jquery";
import {TweenMax,Power0, Power2, Power4} from "gsap";
import Snap from 'snapsvg-cjs';
export default class Wrapper extends React.Component {
render() {
return <div className="container">
<svg id="back">
<radialGradient id="SVGID_1_" cx="0" cy="0" r="320.8304" gradientUnits="userSpaceOnUse">
<stop offset="0" className="stop1"/>
<stop offset="1" className="stop2"/>
</radialGradient>
</svg>
<div id="card" className="weather">
<svg id="inner">
<defs>
<path id="leaf" d="M41.9,56.3l0.1-2.5c0,0,4.6-1.2,5.6-2.2c1-1,3.6-13,12-15.6c9.7-3.1,19.9-2,26.1-2.1c2.7,0-10,23.9-20.5,25 c-7.5,0.8-17.2-5.1-17.2-5.1L41.9,56.3z"/>
</defs>
<g id="layer3"></g>
<g id="cloud3" className="cloud"></g>
<g id="layer2"></g>
<g id="cloud2" className="cloud"></g>
<g id="layer1"></g>
<g id="cloud1" className="cloud"></g>
</svg>
<div className="videoArea">
Video hierfr
</div>
<div className="details">
<div className="temp">20<span>c</span></div>
<div className="right">
<div id="date">20 May 2050</div>
<div id="summary"></div>
</div>
</div>
</div>
<svg id="outer"></svg>
</div>;
}
}
// Fetch all DOM nodes in jQuery and Snap SVG
var currentWeather = "thunder";
var container = $('.container');
var card = $('#card');
var innerSVG = Snap('#inner');
var outerSVG = Snap('#outer');
var backSVG = Snap('#back');
var summary = $('#summary');
var date = $('#date');
var weatherContainer1 = Snap.select('#layer1');
var weatherContainer2 = Snap.select('#layer2');
var weatherContainer3 = Snap.select('#layer3');
var innerRainHolder1 = weatherContainer1.group();
var innerRainHolder2 = weatherContainer2.group();
var innerRainHolder3 = weatherContainer3.group();
var innerLeafHolder = weatherContainer1.group();
var innerLightningHolder = weatherContainer1.group();
var leafMask = outerSVG.rect();
var leaf = Snap.select('#leaf');
var outerLeafHolder = outerSVG.group();
var lightningTimeout;
// Set mask for leaf holder
outerLeafHolder.attr({
'clip-path': leafMask
});
我得到的错误是:
TypeError:无法读取 null 的属性“组”
排队
var innerRainHolder1 = weatherContainer1.group();
解决方案
推荐阅读
- amazon-web-services - 为什么 CloudFormation 对某些列表类型需要 Quantity?
- mongodb - 使用在 Docker 上运行的导出器和 Prometheus 监控 MongoDB
- python - 在 Python 中学习随机函数
- c++ - 使用 std::move 优化向量构建
- python - 将数据集绘制到折线图
- javascript - 无法在 JavaScript 上正确重用函数
- html - HTML / Wordpress 图像高度/宽度问题
- doctrine-orm - v10 更新失败,MYSQLI_SERVER_PUBLIC_KEY
- r - 基于现有数据框的数据框中的子集行
- ssh - 如何从笔记本电脑连接到 Apache Ignite 集群进行开发?