UPDATE решаемые плохо сКак я могу отобразить компонент React на основе имени prop, переданного в контейнер?
const curSlide = this.props.name;
const setView =() => {
if(curSlide === 'Slide1') {
return <Slide1 />
} else if(curSlide === 'Slide2') {
return <Slide2 />
} else {
return <Slide3 />
}
}
return(
<div>
<center>
{setView()}
</center>
</div>
У меня есть история, которая содержит слайд-контейнер, в котором хозяйничает различные компоненты. У меня есть кнопка под контейнером для истории, которая при нажатии передает this.props.name + 1 в контейнер слайдов. Я хотел бы, чтобы контейнер слайдов мог использовать эту информацию и отображать правильный слайд на основе нажатия кнопки.
Я не уверен, почему ничего не появляется, когда нажимается кнопка.
Story.js
import React, { Component, PropTypes } from 'react'
import sass from '../scss/application.scss'
import SlideContainer from './SlideContainer'
class Story extends Component {
constructor(props){
super(props)
this.state = {
name: '',
count: 0
}
}
handleClick(e) {
e.preventDefault();
let tempCount = this.state.count + 1;
let curSlide = `Slide${tempCount}`;
this.setState({
name: curSlide,
count: tempCount
});
}
render() {
return(
<div>
<div>
<SlideContainer name={this.state.name}/>
</div>
<center><button className="btn btn-danger" onClick={this.handleClick.bind(this)}>
<span className="glyphicon glyphicon-heart"></span></button>
</center>
</div>
)
}
}
Story.propTypes = {
name: PropTypes.string,
count: PropTypes.number
}
export default Story;
SlideContainer.js
import React, { Component, PropTypes } from 'react'
import sass from '../scss/application.scss'
import Slide1 from './Slide1'
import Slide2 from './Slide2'
class SlideContainer extends Component {
constructor(props){
super(props)
this.state = {
name: ''
}
}
render() {
let curSlide = this.props.name;
return(
<div>
<center>
<curSlide />
</center>
</div>
)
}
}
SlideContainer.propTypes = {
name: PropTypes.string
}
export default SlideContainer;
Несколько комментариев OT -
центр по-прежнему хорошо работает, должен ли я просто добавить текст в соответствие с div или как бы вы теперь центрировали div? – user3622460
в целом все стили должны выполняться с помощью CSS - в теории браузеры могут начать откатываться от поддержки