内部反应动画If语句不呈现

问题描述 投票:1回答:1

我在if块中有一个react动画组件,如下所示;

import { CSSTransitionGroup } from 'react-transition-group'

......
......
......
......


render() {
   return(
      <div className="App"
         {
           this.state.isloading 
             ? <div className="loader"></div>
             : <CSSTransitionGroup
                 transitionName="example"
                 transitionEnterTimeout={1000}
                 transitionLeaveTimeout={750}
               >
                 {this.state.hot_list.length > 0 
                   ? <Displaycont hot_list={this.state.hot_list} /> 
                   : null}
              </CSSTransitionGroup>
          }
      </div>
 )
}

这不会使动画仅呈现“Displaycont”组件。

如果我删除If块,动画将按预期呈现。我正在设计它,如图所示;

https://reactjs.org/docs/animation.html#low-level-api-reacttransitiongroup

我有什么想法可能做错了吗?

reactjs
1个回答
1
投票

CSSTransitionGroup应该始终安装,只有其子女必须有条件地呈现。

我不确定原因,但所有React文档示例都是这样做的。我想,这是因为CSSTransitionGroup生命周期方法及其工作方式。

但是,这是你如何做到这一点:

render () {
  const { isLoading, hot_list } = this.state

  return (
    <div className='App'>
      { isLoading ? <div className='loader' /> : null }
      <CSSTransitionGroup
        transitionName='example'
        transitionEnterTimeout={1000}
        transitionLeaveTimeout={750}
      >
        { isloading && hot_list.length > 0 ? <Displaycont hot_list={hot_list} /> : null }
      </CSSTransitionGroup>
    </div>
  )
}
© www.soinside.com 2019 - 2024. All rights reserved.