所以,我试图找出最好的方法来做到这一点:
在反应中显示模态或隐藏模态。在我的主页上,我有很多照片,我目前的状态设置是:
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包将重新渲染,但在模式打开和关闭时不应更改任何数据。
思想?
也许你应该考虑使用一个组件来包装你的模态并管理状态。您的主要组件将不再更新。
正如上面的评论所说,一旦状态更新,就会刷新视图,这是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像素的图象,每一个像素