Im пытается показать тот или иной компонент в реактиве. Я могу показать компонент по щелчку, но я не могу показать другое.Показать компонент if 'true', иначе показать другой компонент (в реактиве)
React Код:
import React, { Component } from 'react'
import { Motion, spring } from 'react-motion'
import Header from '../../components/services/Header'
import ServiceSelector from '../../components/services/ServiceSelector'
import PriceCalculator from '../../components/services/PriceCalculator'
import VVSRequest from '../../components/services/VvsRequest'
import VVSFeatures from '../../components/services/VVSFeatures'
import GalleryPreview from '../../components/services/GalleryPreview'
import Footer from '../../components/services/Footer'
require('styles/_servicesPage/services.css')
require('styles/_servicesPage/serviceSelector.css')
var ReactCSSTransitionGroup = require('react-addons-css-transition-group');
export default class Services extends Component {
componentWillMount() {
this.state = {
showPriceCalculator: false
}
}
handleClick(e) {
const userChoice = e.target.className
this.setState({ userChoice })
}
toggleDiv(toggle) {
console.log('te',toggle);
this.setState({showPriceCalculator: toggle})
}
render() {
var styleVar = {
backgroundImage: 'url(assets/images/services/service_bg.jpg)'
}
return (
<div>
<Header />
<ServiceSelector toggleDiv={this.toggleDiv.bind(this)}/>
{this.state.showPriceCalculator ?
<PriceCalculator toggleDiv={this.toggleDiv.bind(this)}/> : <VVSFeatures />}
{/*<VVSFeatures />
<VVSRequest />*/}
<GalleryPreview />
<Footer />
</div>
)
}
}
На нагрузке он показывает
<VVSFeatures />
как это должно
, но после того, как состояние устанавливается в
showPriceCalculator: true
и тогда снова установить значение false, noth (должно появиться снова)
Он воспроизводит правильное значение состояния, но ничего не происходит. Что может быть неправильным?
Спасибо!
Are вы 100% уверены, что состояние является правильным? Кроме того, я не знаю, где вы используете этот 'handleClick', но' this.setState ({userChoice}) 'может переписывать ваше состояние. Может быть, поставить console.log состояния внутри рендера, чтобы вы могли видеть его в каждой точке, чтобы дважды проверить? Где часть кода, которая возвращает значение false? – ajmajmajma
Откуда вы знаете, что он редертирует с правильным состоянием? вы можете сделать 'console.log ('showPriceCalculator:', this.state.showPriceCalculator)' after' render() {'и сообщить нам, если вы видите правильное значение? –
Да, я вышел из состояния внутри метода рендеринга, и я напечатал true, когда я из ServiceSelector установил его в true, и он напечатал false, когда я установил его в false из компонента PriceCalculator. – AlfredO