我在我的反應項目中需要一個對話框,但我找不到實現它的好方法。我已經搜索了其他實現,例如react-modal-dialog,react-modal。有沒有更好的方法來與react.js實現對話?
但我不認爲他們做的最好的方式,最令人困惑的部分是封裝。
以react-modal爲例:以上
var App = React.createClass({
getInitialState: function() {
return { modalIsOpen: false };
},
openModal: function() {
this.setState({modalIsOpen: true});
},
closeModal: function() {
this.setState({modalIsOpen: false});
},
render: function() {
return (
<div>
<button onClick={this.openModal}>Open Modal</button>
<Modal
isOpen={this.state.modalIsOpen}
onRequestClose={this.closeModal}
style={customStyles} >
<h2>Hello</h2>
<button onClick={this.closeModal}>close</button>
<div>I am a modal</div>
<form>
<input />
<button>tab navigation</button>
<button>stays</button>
<button>inside</button>
<button>the modal</button>
</form>
</Modal>
</div>
);
}
});
的代碼顯示使用Modal
的方式,但你可以發現,我們的每一次自己定義onRequestClose
。我知道原因是,Modal
可以通過自己或其父視圖關閉。
但我想知道,在父視圖中調用Modal.close()
(因爲封裝)更好嗎?如果是這樣,你能否給我更多的實施細節?
謝謝您的回答。在閱讀要點後,我知道這個問題是關於非宣佈和宣佈狀態之間的折衷。要點的其他部分也是有道理的,也許我已經找到了重建我的對話框的方法:) – Shin