如何使用带有 React 视图切换的 jQuery 模式?

Posted

技术标签:

【中文标题】如何使用带有 React 视图切换的 jQuery 模式?【英文标题】:How to use a jQuery modal with React view switching? 【发布时间】:2014-05-02 08:39:16 【问题描述】:

在 React 方面我有点新手,所以希望有人可以提供帮助。

我已经能够使用 React 创建一个通用的视图切换组件。

var ViewSwitcherContainer = React.createClass(
getInitialState: function() 
    return 
        activeViewName : this.props.views[0].Name
    ;
,
selectView: function(name) 
    this.state.activeViewName = name;
    this.forceUpdate();
,
render: function () 
    return  <div>
        <ViewSwitcher views=this.props.views onViewSelection=this.selectView/>
        <ViewSwitcherContent views=this.props.views activeViewName=this.state.activeViewName/>
    </div>;

);

这是一个 JSFiddle 演示... http://jsfiddle.net/paheal/j8Ubc/

但是,当我尝试在模态组件中加载该切换组件时,有时会收到一个'未捕获错误:不变违规:findComponentRoot(..., .r[3iziq].[1].[ 0].[1]):无法找到元素。这可能意味着 DOM 发生了意外突变(例如被浏览器)。' react 中的错误。

var ModalView = React.createClass(
getInitialState: function () 
    this.viewDefinitions = [
        DisplayName:'View A', Name:'viewA', View:ViewA,
        DisplayName:'View B', Name:'viewB', View:ViewB
    ];
    return ;
,
componentDidMount: function () 
        $("#" + this.props.modalId ).dialog(
            autoOpen: false,
            height: 400,
            width: 400,
            modal: true,
            draggable: false,
            resizable: false
        );
,
render: function () 
    return  <div id=this.props.modalId title=this.props.modalId>
            <ViewSwitcherContainer views=this.viewDefinitions/>
    </div>;

);

这是一个 JSFiddle 演示... http://jsfiddle.net/paheal/j8Ubc/7/

我错过了什么?是我的模态组件还是视图切换组件的问题?

【问题讨论】:

【参考方案1】:

我实际上找出了问题所在。似乎 jQueryUI 中的对话框功能通过为对话框及其标题栏动态创建 div 来添加到 DOM。

根据事情的时间安排,这可能会在 React 进行协调时导致问题。

为了解决这个问题,我实现了一个模态对话框的 Reactified 版本。

【讨论】:

所以你完全停止使用 jQueryUI 对话框了吗?我在尝试使用基金会的揭示时遇到了类似的问题。 你有你实现的 Reactived 版本的链接或代码示例吗?

以上是关于如何使用带有 React 视图切换的 jQuery 模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 移动列表视图中切换复选框

带有 React 和 Vue 的语义 UI 和 jQuery

jQuery Mobile:在列表视图数据拆分图标上更改/切换主题

使用带有 angularjs 和 jquery mobile 的翻转切换开关

如何使用带有 react-native-camera 的默认 iOS 相机控件

jQuery - 带有视频的标签...当我在标签之间切换时如何让视频停止播放?