如何在 React 中从另一个组件调用组件的方法
How can I call a component's method from another component in React?
我有一个模态组件,其中包含两个显示/隐藏模态的方法。如何从另一个组件调用这些方法?
这是模态的代码:
// Dependencies
//==============================================================================
import React from 'react'
import Modal from 'boron/DropModal'
// Class definition
//==============================================================================
export default class RegistrationModal extends React.Component {
showRegistrationModal() {
this.refs.registrationModal.show()
}
hideRegistrationModal() {
this.refs.registrationModal.hide()
}
render() {
return (
<Modal ref="registrationModal" className="modal">
<h2>Meld je aan</h2>
<button onClick={this.hideRegistrationModal.bind(this)}>Close</button>
</Modal>
)
}
}
只要
保留对组件的引用,就可以从外部调用组件方法。例如:
let myRegistrationModal = ReactDOM.render(<RegistrationModal />, approot );
// now you can call the method:
myRegistrationModal.showRegistrationModal()
如果将对模态的引用传递给另一个组件(如按钮),则会更简洁一些:
let OpenModalButton = props => (
<button onClick={ props.modal.showRegistrationModal }>{ props.children }</button>
);
let myRegistrationModal = ReactDOM.render(<RegistrationModal />, modalContainer );
ReactDOM.render(<OpenModalButton modal={ myRegistrationModal }>Click to open</OpenModalButton>, buttonContainer );
工作示例:http://jsfiddle.net/69z2wepo/48169/
您不能从另一个组件调用它,因为它是属于RegistrationModal
组件的方法,但您可以重构代码以便可以调用它
export function hideRegistrationModal() {
console.log("ok");
}
export default class RegistrationModal extends React.Component {
render() {
return (
<Modal ref="registrationModal" className="modal">
<h2>Meld je aan</h2>
<button onClick={hideRegistrationModal}>Close</button>
</Modal>
)
}
}
现在您可以从任何地方拨打电话,但您需要像这样先导入它
import { RegistrationModal, hideRegistrationModal } from 'path to modal.js'
// ^-- Component name ^-- Method
您要做的是创建一个父组件,该组件将处理模态之间的通信。
一个非常好的例子和解释可以在这里找到:ReactJS两个组件通信
这是一个很好的方法,因为它可以使您的组件分离。
相关文章:
- 从 HTML 组件调用 Javascript
- 反应组件调用了两次(AJAX调用异步)
- Vue.js 从另一个组件调用方法
- 从反应组件调用外部Javascript函数
- 如何在React Native中使用Navigator对正在转换为的组件调用方法
- 如何包含多个组件,然后可能从一个组件调用另一个组件
- 当子组件有嵌套的多个父组件时,从子组件调用超父函数
- 在reactjs中,从父组件调用并传递参数给子组件的函数
- React:从非所有者父组件调用函数
- 从Ember 2.0组件调用控制器动作
- 从另一个组件调用React VideoJS组件的方法
- 不能使用React从子组件调用父组件中的函数
- 如果不在主代码流中,ActiveX组件调用的回调函数不会触发
- 如何从不同的组件调用函数
- JavaScript,只在需要时才加载组件/调用方法
- Angular2从另一个组件调用函数
- Knockoutjs:从子组件调用父组件的函数
- 如何从子组件调用父组件中的方法
- 为什么用jQuery组件调用函数会重新加载xhtml页面
- 如何在 React 中从另一个组件调用组件的方法