【发布时间】:2020-11-18 02:01:48
【问题描述】:
我正在尝试在网站上构建一种不同组件的幻灯片。我已将所需的幻灯片作为单个元素导入并将它们存储在一个数组中。我已经写好了基本结构,但是不知道如何使用索引来渲染存储在数组中的组件。
import React, {useState} from 'react';
import Slide1 from './slides/slide1.js';
import Slide2 from './slides/slide2.js';
import Slide3 from './slides/slide3.js';
import Slide4 from './slides/slide4.js';
import Slide5 from './slides/slide5.js';
function Presentation({slides,index}) {
return(
<div className="presentation">
<React.Fragment key={index}> {slides[index]} </React.Fragment>
</div>
)
}
function Buttons({index, setIndex, size}) {
const nextSlide = (index) => {
if(index<size-1) setIndex(++index)
}
const prevSlide = (index) => {
if(index>0) setIndex(--index)
}
return(
<nav className="buttons">
<button onClick={(index)=>prevSlide}> Previous </button>
<button onClick={(index)=>nextSlide}> Next </button>
</nav>
)
}
function Main() {
const slides = [Slide1, Slide2, Slide3, Slide4, Slide5]
const [index,setIndex] = useState(0);
return(
<main>
<Presentation slides={slides} index={index}/>
<Buttons index={index} setIndex={setIndex} length={slides.length}/>
</main>
)
}
export default Main;
但这不起作用。有没有人有正确或更好的方法来做到这一点?
【问题讨论】:
-
你不需要
React.Fragment,你可以简单地使用<slides[index] key={index}>。 -
另外,
<Presentation slide={slides[index]} />怎么样?这样,您甚至不需要 Presentation 组件中的索引。 -
@GhassenLouhaichi 我之前尝试过你的第一个建议,结果出错
-
什么样的错误?
-
解析错误:意外的令牌
标签: javascript arrays reactjs react-component react-functional-component