如何动态更改 React Bootstrap 模态的内容?

How do I dynamically change the content of a React Bootstrap modal?

我试图在安装后更改模式的内容,但我无法找到要更改的正确节点。我已将 refs 附加到我感兴趣的节点,并尝试在 componentDidMount() 中更改它们。但是没有找到节点——显示为空。

var Modal = ReactBootstrap.Modal;


const MyModal = React.createClass({

  getInitialState() {
    return { showModal: false };
  },

  close() {
    this.setState({ showModal: false });
  },

  open() {
    this.setState({ showModal: true });
  },


  componentDidMount() {
    var theNode = ReactDOM.findDOMNode(this.refs.bigPic);
    var theOtherNode = ReactDOM.findDOMNode(this.refs.bigPicInfo);
    theNode.src = 'http://big-pic.png';
    theOtherNode.innerHTML = "<strong> Something here</strong>";
  },

  render() {
    return (
        <div>
        <Modal show={this.state.showModal} onHide={this.close}>
          <Modal.Header closeButton>
            <Modal.Title></Modal.Title>
          </Modal.Header>
          <Modal.Body>
            <div><img ref="bigPic" src="" /></div>
          </Modal.Body>
          <Modal.Footer>
            <p ref="bigPicInfo"></p>
          </Modal.Footer>
        </Modal>
        </div>
    );
  }
});

ReactDOM.render(<MyModal/>, document.getElementById("my-modal"));

React 中的动态内容由组件状态驱动,与您使用 this.state.showModal 动态显示或不显示模态框的方式相同。任何可能改变的东西都应该在 getInitialState 中有一个默认设置,然后用你的新值调用 this.setState().. 这将触发你的组件重新渲染。

const MyModal = React.createClass({

  getInitialState() {
    return { 
      showModal: false,
      bigPicSrc: '',
      infoContent: ''
    }
  },

  ...

  componentDidMount() {
    this.setState({ 
      bigPicSrc: 'http://big-pic.png'
      infoContent: <strong>Something here</strong> // not a string, but a component
    })
  },

  render() {
    return (
      <Modal show={this.state.showModal} onHide={this.close}>
        <Modal.Header closeButton>
          <Modal.Title></Modal.Title>
        </Modal.Header>
        <Modal.Body>
          <div><img ref="bigPic" src={this.state.bigPicSrc} /></div>
        </Modal.Body>
        <Modal.Footer>
          <p ref="bigPicInfo">{this.state.infoContent}</p>
        </Modal.Footer>
      </Modal>
    )
  }
})

我使用 node 和 react 16,之前我对 Bootstrap 了解得很少,现在收集我关于 bout react 和 bootstrap 的知识。接下来我制作模态:首先,我将 CDN 链接与 Bootstrap css 和 js,以及 public 文件夹中的 index.html 中的 jquery 链接。接下来从 ny 应用程序的 SRC 文件夹中为 components 创建文件夹。下一步,我将新文件示例 modal.js 中的 bootstrap 代码放入 React 中的 clssName 并更改 bootstrap class。 modal 为 show modal

编写了 Klick 文本。并认为模态的更改内容必须使用数据 Json 文件的一些数据,您必须将 Json 数据的 id 字段和 ref 或 id tigger 事件与您调用此模态连接。来自 data.json 的不同事件调用 Id 字段。我认为最好使用开关盒以便于选择。