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

React High Level Component在多次使用时不会更新

松越
2023-03-14

我一直在寻找一个使用可重用模型对话框窗口的解决方案,但在那里我可以自由地使用内容,并在React中使用了高级组件模式。如下所述:https://stackoverflow.com/a/31564812.

虽然这最初似乎是可行的,但当我使用一个包装器包装不同的东西(在不同的时间)时,我会遇到麻烦。

首先,我要:

function Dialog(Component) {
    return React.createClass({
        render: function() {
            return ( 
                <div className="wrapper"> 
                    before 
                    <Component {...this.props}/>
                    after
                </div>
            );
        }    
    });
};

module.exports = Dialog;

然后我做了:

var Dialog = require('./Dialog.jsx');
DialogContent = React.createClass({
    render: function () {
      return ( 
        <div> blah blah this is for login</div>
      )
    };
};                                      
var LoginDialogWindow = new Dialog(DialogContent);
module.exports = LoginDialogWindow;

 var Dialog = require('./Dialog.jsx');
 OtherContent = React.createClass({
        render: function () {
          return ( 
            <div>Jo Jo, this is something else</div>
          )
      };
  };                                      
  var OtherDialogWindow = new Dialog(OtherContent);
  module.exports = OtherDialogWindow;

然后我得到的是这两个组件共享它们的状态。当一个被定义时,另一个将显示与第一个相同的文本。我在一个函数上调用一个函数,另一个函数也被调用。我看到的是,当我打开一种风格的对话框窗口时,两种风格都出现了。

我猜这与JavaScript闭包有关,但我不知道如何实现这一点。我如何单独使用这些?

共有2个答案

东方高洁
2023-03-14

好啊我找到了解决办法。它与此继承完全无关,而是与一个EventManager有关,后者提交了所有实例都侦听的事件(duh!)。因此,对于那些寻找灵活(且有效)的react对话框窗口的人,您应该可以在这里找到它。(尽管大部分信用卡都归minutemailer所有)

柴翰藻
2023-03-14

删除new关键字从你的LoginDialogWindow其他DialogWindow调用。new用于创建具有构造函数的对象的实例,这不是你想要的。

 类似资料:
  • 我有一个标签,这是使用了多次在我的网页。它工作得很好,直到我尝试按Ajax更新标签。结果:只有第一个标签得到更新。这是一个已知的问题吗?我不确定,因为我不能打开JIRA页面:https://issues.apache.org/JIRA/browse/wicket(一直在跳)。我使用的是wicket 7.3.0版本 =>只更新第一个标签。我有一个解决办法,通过添加4个不同的标签实例与相同的文本内容。

  • 我正在尝试用杜松子酒和戈尔姆酒制作API。现在我已经插入了一个API。这个API将在数据库中创建多个条目。我有这样的json体。数组的大小会有所不同。 这样,我就有了从url获取的其他参数- 现在我想在DB上创建多个条目[1,2],其中包含key1和key2的数据,如- 我陷入了困境,不知道如何阅读这个json并将数据保存在我的模式(struct)中,以创建多个条目,如- 请引导我找到一个可能的解

  • 尝试制作一个有无线电开关的程序,每个开关相当于一个不同的布尔值。根据布尔值,它会使文本字段上的“禁用”属性为true或false。我的代码允许将按钮默认选择为启用编辑,当我选择禁用时,它将禁用文本字段。但是,如果我单击“禁用”,然后再次尝试单击“启用”,则不会将文本字段从“禁用”更改为“启用”。 如果无线电编辑的默认状态不是“false”,它会自动禁用(设置为true或null),并且不会让我多次

  • 我有一个容器,它有一个头标签和一个div。div会消耗剩余的空间,因为容器的高度为100VH。在div中还有两个div,一切正常,但当我向右侧的div添加更多内容并缩小浏览器窗口时,它会溢出父div,我使用了flex box,所以它应该包装内容,而原始div的高度应该相应增加以包装它的元素,但它没有发生。 HTML: CSS: 我在这里做错了什么?是最小-最大高度/宽度吗?

  • 问题内容: 这是我的HTML: 当我在框中输入内容时,该模型会通过2向绑定机制进行更新。甜。 但是, 当我通过JQuery执行此操作时… 它不会更新模型。为什么? 问题答案: Angular不知道这种变化。为此,您应该在以下位置致电或进行更改: 看到这个以更好地了解 脏检查 更新 :这是一个示例

  • 我正在学习线程同步。我的测试代码如下: 我以为“计数”的每一个输出都会连续增加一个。然而,事实却大不相同。就像: //程序输出开始:线程:139663694870272,计数:0线程:139663694870272,计数:1线程:139663694870272,计数:2线程:139663694870272,计数:3线程:139663694870272,计数:4线程:139663694870272,