簡體   English   中英

模態上的反應過渡組

[英]react-transition-group on Modal

我有條件地渲染一個模態,在上一次點擊時將數據渲染到其中,一旦模態關閉,該數據就會從 state 中刪除。(與模態相關的所有數據都存儲在父組件中)。

現在我正在使用來自 react-transition-group 的 CSSTransition,為 Modal 的安裝/卸載設置動畫,調用 Modal 的代碼片段就像

<CSSTransition  
 in={modal.status && modal.state === 'MEDIA_INFO_MODAL'}  
 appear={true}  
 timeout={200}  
 nodeRef={modalRef}  
 classNames="my-node"  
 unmountOnExit  
\>
    <Modal ref={modalRef} modalClicker={modalHandler}>{modal.data}</Modal>
</CSSTransition>

正如在這個codesandbox中看到的那樣,關閉后的模態組件仍然呈現,在我的例子中它給出了錯誤,因為一旦我從模態中點擊關閉按鈕, modal.data就會變成null ,在模態中發送null ,導致錯誤。

我不能確定你的代碼的 rest,但看起來你有太多事情要做。 您可以在沙箱示例中看到一種干凈的方式來動畫模態進出。

<CSSTransition  
 in={modal.status && modal.state === 'MEDIA_INFO_MODAL'} 
 timeout={200} 
 classNames="my-node"  
 unmountOnExit  
\>
    <Modal modalClicker={modalHandler}>{modal?.data}</Modal>
</CSSTransition>

我不知道將 ref 從過渡傳遞到元素的原因,所以我把它拿出來了。 這個確切的方法就是我如何使用 react-transition-group 來處理我所有的模態。

此外,當您訪問 object 上的屬性時,將 state 更改為 null,最好在引用它時使用可選鏈接

例如

modal?.data

它是一種語法糖,用於在訪問其屬性之前檢查 object 是否存在

如果您絕對需要保持組件呈現,那么您將需要刪除unmountOnExit ,但根據您描述的問題:

我一點擊關閉按鈕,modal.data 就變成了 null

那么您的問題應該通過可選鏈接來解決。 如果保持組件掛載,您可能需要使用 css 隱藏它,或者確保Modal組件中只有 null 內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM