Reactjs 始终安装react引导模式

Reactjs 始终安装react引导模式,reactjs,react-bootstrap,Reactjs,React Bootstrap,对于react bootsrap modal的当前实现,需要呈现该模式并传递一个showprop来确定是否显示该模式。 这意味着,如果我构建了一个围绕的组件,它将从第一次渲染开始挂载,所有初始化逻辑都将启动,即使没有显示模式。 有没有办法避免这种情况 如果我尝试执行{this.state.showmodel&&}而不是使用模态showprop-我将放弃动画和模态的正确隐藏 目前我无法使用路由器 不确定为什么不能使用React路由器,但通常的做法是不要在组件willmount中显示/隐藏逻辑,因

对于react bootsrap modal的当前实现,需要呈现该模式并传递一个
show
prop来确定是否显示该模式。
这意味着,如果我构建了一个围绕
的组件,它将从第一次渲染开始挂载,所有初始化逻辑都将启动,即使没有显示模式。
有没有办法避免这种情况

  • 如果我尝试执行
    {this.state.showmodel&&}
    而不是使用模态
    show
    prop-我将放弃动画和模态的正确隐藏
  • 目前我无法使用路由器

不确定为什么不能使用React路由器,但通常的做法是不要在组件willmount中显示/隐藏逻辑,因为这不起作用

相反,当您将
show
设置为true或false时,您可以使用或更简单地运行初始化逻辑

特别是如果您包装模式以创建
并维护相同的api,然后执行以下操作:

componentWillReceiveProps(nextProps) {
  if (nextProps.show && !this.props.show) {
     //opening
  else if (!nextProps.show && this.props.show) {
     // closing
  }
} 
补充评论:


如果您不喜欢这种方法,我建议您改为包装
,并将其插入模式,然后您的生命周期挂钩将按照您的预期运行,因为您正在将内容添加到在展会上挂载的模型部分。

不确定为什么您不能使用React Router,但通常的方法是不要在
组件中将显示/隐藏逻辑挂载,因为这不起作用

相反,当您将
show
设置为true或false时,您可以使用或更简单地运行初始化逻辑

特别是如果您包装模式以创建
并维护相同的api,然后执行以下操作:

componentWillReceiveProps(nextProps) {
  if (nextProps.show && !this.props.show) {
     //opening
  else if (!nextProps.show && this.props.show) {
     // closing
  }
} 
补充评论:


如果您不喜欢这种方法,我建议您将其包装成
,并将其插入到一个模式中,那么您的生命周期挂钩将按照您的预期运行,因为您正在将内容添加到在展会上安装的模型部分。

好吧。。。我觉得React inspector DOM树中显示的
有问题,尽管它不应该初始化或显示,但您看到的是渲染树中组件的存在,它实际上不是渲染的东西,您会注意到任何地方都没有DOM,此外,实际的模态会从文档体中呈现出来。更重要的是,这是工具中的失败,而不是组件API。香草引导从一开始就要求所有模式都在DOM中,除非您进行了一些奇特的包装。所以我们仍然做得更好。嗯。。。我觉得React inspector DOM树中显示的
有问题,尽管它不应该初始化或显示,但您看到的是渲染树中组件的存在,它实际上不是渲染的东西,您会注意到任何地方都没有DOM,此外,实际的模态会从文档体中呈现出来。更重要的是,这是工具中的失败,而不是组件API。香草引导从一开始就要求所有模式都在DOM中,除非您进行了一些奇特的包装。因此,我们仍然做得更好。