【发布时间】:2020-09-04 10:10:22
【问题描述】:
我有一些 javascript 代码需要迁移到 reactjs,我正在使用 react 钩子
但是当我包含 javascript 文件时出现错误
TypeError: 无法读取未定义的属性“样式”
我的组件代码
import React from "react";
import '../utils/slider';
export default function Slider()
{
return(
<div className="">
<div className="slideshow-container" onmouseenter="pauseSlides()" onmouseleave="startSlides()">
<div className="mySlides">
<img className ="img-responsive" src="image1.png" style="width:100%;"></img>
</div>
<div className="mySlides">
<img className ="img-responsive" src="image2.png" style="width:100%;"></img>
</div>
<div className="mySlides">
<img className ="img-responsive" src="image3.jpg" style="width:100%;"></img>
</div>
</div>
<div style="text-align:center;">
<span class="dot" onclick="currentSlide(0)"></span>
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
</div>
</div>
);
}
我的 app.js
import React from 'react';
import Slider from "./components/Slider";
function App()
{
return (
<div className="App">
<Slider />
</div>
);
}
export default App;
还有我的 JavaScript 代码:
var slideIndex = 1;
var millis = 60000;
nextSlide();
var interval = setInterval(nextSlide, millis);
function resumeSlides()
{
nextSlide();
}
function pauseSlides()
{
clearInterval(interval);
}
function nextSlide()
{
showSlide();
slideIndex++;
}
function plusSlides(n)
{
clearInterval(interval);
slideIndex += n;
nextSlide();
interval = setInterval(nextSlide, millis);
}
function currentSlide(n)
{
clearInterval(interval);
slideIndex = n + 1;
nextSlide();
interval = setInterval(nextSlide, millis);
}
function showSlide()
{
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++)
slides[i].style.display = "none";
if (slideIndex > slides.length)
slideIndex = 1;
if (slideIndex < 1)
slideIndex = slides.length;
for (i = 0; i < dots.length; i++)
dots[i].className = dots[i].className.replace(" active", "");
slides[slideIndex - 1].style.display = "block";
dots[slideIndex - 1].className += " active";
}
错误说它在第 63 行 (TypeError: Cannot read property 'style' of undefined)
60 | dots[i].className = dots[i].className.replace(" active", "");
61 | }
62 |
> 63 | slides[slideIndex - 1].style.display = "block";
64 | dots[slideIndex - 1].className += " active";
65 | }
【问题讨论】:
-
似乎
slides是一个空数组,因为在 `slides[slideIndex - 1].style.display = "block"; 之前有这行 `slideIndex = slides.length;` ` 给出未定义的 -
是的,这段代码在 html5 和 vanilla JS 中有效,但在 rsx 中找不到我的数组
标签: javascript reactjs