こんにちは私はthis.props.nameに基づいて表示しているスライドのリストを持っています。 私はすべてのスライドをマッピング配列にリストアップしておき、コンテナコンポーネントのボタンを押すことに基づいてもう一方を置き換えてレンダリングしたいと思います。私はコンポーネントをレンダリングするだけで問題があります。マッピングからReact Componentを返すにはどうしたらいいですか?
SlideTestコンポーネントは、Slide1、Slide2、Slide3などの適切な名前で適切にバインドされます。この名前を使用してコンポーネントをレンダリングします。 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
});
}
私はそれを巨大なif else文と一緒に使っています。素敵なトランジションを作成するCSSをたくさん追加しました。リアクタとリンクを使ってこれを構築した方がいいでしょう。しかし、私は、レンダリングされるComponentを返す方法が見つからないとは思わない。実際に反応しているコンポーネントを返すだけですか?もし私がcomponentWillMountのライフサイクルを追加すると、私はそれを動作させることができます – user3622460