反应/reux + 引导,使组件的模态显示唯一
React/redux + bootstrap, make modal show unique for component
我有一个组件,它显示了在我的地图中弹出一些内容的模态。我有一个非常简单的设置:
JSX 看起来像这样:
<Modal show={this.props.results.showPreviewModal} >
{myPreviewContent}
</Modal>
2个动作创建者打开,关闭和设置当前项目:
export function previewAsset(result) {
return {
currentResult: result,
type: actions.PREVIEW_ASSET
};
}
export function closePreviewModal() {
return {
type: actions.CLOSE_PREVIEW_MODAL
};
}
和他们的减速器:
case actions.PREVIEW_ASSET:
return state.set('currentPreview', action.currentResult).set('showPreviewModal', true);
case actions.CLOSE_PREVIEW_MODAL:
return state.set('showPreviewModal', false);
现在,这似乎工作正常。但是,问题是内部具有模态的组件位于映射内,因为它是单个搜索结果(每个结果组件都有一些功能,因此它是它自己的组件,与结果映射在一起)。问题是,如果我有 10 个结果,当我单击触发previewAsset
操作的按钮时,此模式会打开 10 次。
这是有道理的,因为所有组件都可以访问该showPreviewModal
,但我想知道的是是否有一种方法可以使每个组件单独唯一,因此只有 1 个模态打开,而不是全部 10 个。 不确定如何在反应/reux中解决这个问题,非常感谢任何建议,谢谢!
我成功使用的一种方法是将 Modal 组件拉出循环(在本例中为 map()
),并有一个用于 currentItem
或类似内容的化简器,它在选择项目时设置(您也可以使用 currentItemIndex
,然后根据connect()
调用中的当前项目选择当前项目)。
在父组件中,您将 Modal 作为子组件,并且仅在该currentItem
不为 null 时才显示它。
这是一个快速的JSBin示例,向您展示我的意思:
http://jsbin.com/fefoxoy/edit?html,js,console,output
相关文章:
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 打开一个模态并将其链接到AngularJS中的指令
- SemanticUI模态not onDeny/onApprove事件未激发
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何通过所选索引(AngularJS)在模态弹出窗口中显示数据
- 包含数据库中相关信息的开放模态
- bootstrap消除模态并显示另一个模态
- 模态提示-如何重写此代码
- 模态框无法正常工作
- Twitter Bootstrap v3.0.0 未显示模态组件
- 如何使用 Reactjs 用组件的状态填充模态表单
- 测试 React 模态组件
- 反应/reux + 引导,使组件的模态显示唯一
- ngClick on Bootstrap's模态组件
- 为什么Angular UI引导使用提供程序来处理模态和工具提示中的逻辑,而不在其他组件中
- 从组件打开模态
- ReactJS:在模态中动态加载组件的最佳方式
- React用class查找所有组件,从外部更新组件状态或道具.模态叠加
- React-Redux与Bootstrap——模态组件
- 语义UI模态组件onClose with React