javascript - React.js - 使用 renderComponentToString 时未调用 componentDidMount

标签 javascript twitter-bootstrap reactjs

我正在将 html 内容设置为 Twitter 的 Bootstrap 弹出窗口。

var Content = React.createClass({
    componentDidMount: function() {
        alert('ok'); // not called
    },
    render: function() {
        return (
            <div>foobar</div>
        );
    }
});

var Button = React.createClass({
    componentDidMount: function() {
        $(this.getDOMNode()).popover({
            placement: 'right',
            trigger: 'manual',
            html: true,
            content: function() {
                return React.renderComponentToString(<Content />);
            }
        });
    },
    render: function() {
        return (
            <button onClick={this.handleClick} className="btn btn-default">{this.props.name}</button>
        );
    },
    handleClick: function() {
        $(this.getDOMNode()).popover('toggle');
    }
});

为此,我可以将 html 内容设置到弹出窗口中,我必须使用 renderComponentToString 方法。不幸的是,这个方法没有调用componentDidMount方法。为什么会发生这种情况以及如何解决?谢谢。

最佳答案

我改编了React-bootstrap docs并让弹出窗口以这种方式工作:

/** @jsx React.DOM */

var Button = ReactBootstrap.Button;
var OverlayTrigger = ReactBootstrap.OverlayTrigger;
var Popover = ReactBootstrap.Popover;

var Content = React.createClass({
    render: function() {
        return (
          <OverlayTrigger trigger="click" placement="right" overlay={<Popover title="Popover right"><strong>Holy guacamole!</strong> Check this info.</Popover>}>
            <Button bsStyle="default">Holy guacamole!</Button>
          </OverlayTrigger>
        );
    }
});

包含react-bootstrap.js以获取全局可访问的组件。它在 bower package 中提供。 .

当然也包括 React。

关于javascript - React.js - 使用 renderComponentToString 时未调用 componentDidMount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832025/

相关文章:

javascript - 编辑记录: conflict between props and state

Chromium 中的 JavaScript 语法错误 : missing ) after argument list

javascript - 在 React Native Picker 中仅渲染唯一标签

javascript - 网络驱动器上 appendFile 上的 EPERM

twitter-bootstrap - 模态中的模态 - 如何仅关闭内部模态

html - 将图像作为水印添加到响应式内容

jquery-plugins - Twitter Bootstrap Popovers 在数据表上过滤后不起作用

javascript - 如何在 Material UI React 中以特定宽度(如 'sm')添加 fullWidth 等 Prop

Javascript生成动态数字字符串

javascript - 如何减少if的数量