【发布时间】:2017-06-20 02:22:53
【问题描述】:
您好,我有一个基于 this.props.name 显示的幻灯片列表。 我在映射数组中列出了所有幻灯片,我想根据容器组件中的按钮按下来将它们渲染出来 1 替换另一个。我在渲染组件时遇到了麻烦。
容器 div 上的按钮正确地为 SlideTest 组件提供正确的名称,例如 Slide1、Slide2、Slide3 等。我希望 SlideTest 采用此名称并呈现组件。我只能返回像 Slide1 这样的东西,这不是我理想中想要的组件。
export const mapping = { Slide1, Slide2, Slide3, Slide4 }
这是使用映射的组件
import React, { Component, PropTypes } from 'react'
import sass from '../scss/application.scss'
import { mapping } from './AllSlides'
class SlideContainer extends Component {
constructor(props){
super(props)
this.state = {
name: '',
}
}
render() {
const curSlide = () => {
console.log(mapping[this.props.name]);
return mapping[this.props.name];
}
return(
<div>
<center>
{curSlide()}
</center>
</div>
)
}
}
SlideContainer.propTypes = {
name: PropTypes.string
}
export default SlideContainer;
这里是容器外部按钮的handleClick函数。
handleClick(e) {
e.preventDefault();
let tempCount = this.state.count + 1;
let curSlide = `Slide${tempCount}`;
this.setState({
name: curSlide,
count: tempCount
});
}
【问题讨论】:
标签: reactjs mapping components render