Вы не можете создавать компоненты React, помещая их в строки, используя JSX, ваш код можно сократить до следующего:
this.state.showGraph ? <span>Graph View!</span> : <ShotLog shotLog={this.state.shotLog} />
Используя троичное условие, вы можете решить, что отображать, в зависимости отзначение переменной showGraph
showGraph
будет сохранено в состоянии вашего компонента, доступного через this.state
, когда вы хотите изменить значение чего-либо в своем состоянии, вам придется вызвать setState
, это заставит ваш компонент перерисовать все на вашем экране и покажет вам, что вы хотите
Рабочий пример:
class ShotLog extends React.Component {
render() {
return <div>Hi I'm a ShotLog</div>
}
}
class App extends React.Component {
constructor(props){
super(props)
this.state = { showGraph: true }
}
handleClick = ev => {
this.setState({ showGraph: !this.state.showGraph })
}
render() {
return (
<div>
{this.state.showGraph ?
<span>Graph View!</span>
:
<ShotLog />}
<button onClick={this.handleClick}>Switch me !</button>
</div>
)
}
}
ReactDOM.render(
<App/>,
document.getElementById('react')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
<div id="react"></div>
Основы JSX вы найдете в следующей официальной документации: https://reactjs.org/docs/introducing-jsx.html
И вы можете узнать больше осостояние ваших компонентов: https://reactjs.org/docs/state-and-lifecycle.html