当前位置: 首页 > 知识库问答 >
问题:

ReactJS:显示模态和再现

孔欣可
2023-03-14

所以,我试图找出最好的方法来做到这一点:

在反应中显示模态或隐藏模态。在我的主页上,我有很多照片,我目前的状态设置是:

export default class Main extends TrackerReact(Component) {
  constructor(props) {
   super(props);
   this.state = {
     showModal: false,
     modalPhoto: {},
   };

   this.close = this.close.bind(this);
   this.open = this.open.bind(this);
}
close() { this.setState({ showModal: false }); } // basic modal close
open(e) {
  this.setState({ modalPhoto: e });
  this.setState({ showModal: true });
}

当我将showModal设置为true时,它将传递到引导模式:

<Modal
  show={this.props.show} >
  // ...loads modalPhoto form main state.modalPhoto
</Modal>

问题:每次我打开模态,它都会改变主状态,并重新呈现主页面。阻止这种重新渲染发生的最佳实践方法是什么?我试过:

// in the main component
shouldComponentUpdate(nextProps, nextState) {
  if (this.state.showModal !== nextState.showModal) {
    return false;
  } else {
    return true;
  } // PS. I know this is wrong, but I was desperate...

我还考虑使用jquery在外部手动显示模式或隐藏模式,从而不改变状态。问题很明显,卸载和接收道具很难维护。

我还知道,如果数据发生更改,TrackerResact包将重新渲染,但在模式打开和关闭时不应更改任何数据。

思想?

共有1个答案

督德明
2023-03-14

也许你应该考虑使用一个组件来包装你的模态并管理状态。您的主要组件将不再更新。

正如上面的评论所说,一旦状态更新,就会刷新视图,这是React的工作方式

Dan Abramov在Stack Overflow上写了一个非常有趣的答案,关于如何处理具有redux状态的模态:如何在Redux中显示执行异步操作的模态对话框?

试着从这篇文章中得到一些启示。

希望这有帮助!

 类似资料:
  • 问题内容: 我正在关注此软件包https://www.npmjs.com/package/react- pdf 我从后端获取了整个原始pdf数据,因此我尝试使用以下代码。 但是它显示“无法加载PDF文件”。我不想在本地保存任何文件。最好的方法是显示pdf以及后端提供的原始数据。 在终端中,它记录了错误: 问题答案: 好像您是将PDF数据作为prop 的值直接传递给组件一样。但是根据文档,您需要使用

  • 问题内容: 我正在尝试突出显示与查询匹配的文本,但是我不知道如何使标记显示为HTML而不是文本。 当前输出: Java 脚本 所需的输出: Java 脚本 问题答案: 这是我简单的twoliner辅助方法: 它返回一个跨度,其中所请求的零件以标签突出显示。如果需要,可以简单地将其修改为使用其他标签。 更新: 为避免唯一键丢失警告,这是一个基于跨度并为匹配的零件设置fontWeight样式的解决方案

  • 问题内容: 我们现在在使用React时遇到了一些问题,但这 有点 归结于我们如何使用React的一部分。 我们应该如何显示/隐藏子组件? 这就是我们的编码方式(这只是组件的片段)… 最近,我一直在阅读一些示例,例如应该沿着以下方向进行: 我应该一直在使用那个React.render()吗?似乎停止了各种各样的事情,如级联到孩子和诸如… 问题答案: 我提供了一个工作示例,它遵循您的第二种方法。更新组

  • 我一直通过不渲染来隐藏/显示反应组件,例如: 但是只要说

  • 我通常使用以下代码隐藏键盘: 该代码总是为我工作,但现在我试图使用它来隐藏它当用户失去焦点从AlertDialog,我有一个警报对话框,包含一个视图与编辑文本和按钮 不幸的是,我得到的结果是,键盘隐藏并立即打开,我有什么选择隐藏键盘时,失去了我的AlertDialog的焦点?

  • 显示模式 返回上级 关于显示模式 测定支持的显示模式 设置显示模式 恢复显示模式 Mode X和Mode 13显示模式 对高分辨率和真彩色的支持 关于显示模式 返回目录 显示模式指的是显示器的当前设置,描述了显示器的分辨率和位深度,这个信息通常是由显示硬件从主页面传递给显示器的。显示模式是由三个特征定义的:宽、高、位深度。例如,大多数的显示器可以显示宽为640像素、高为480像素的图象,每一个像素