摘要:安裝官方提供三個(gè)組件,分別為。這一章主要介紹下組件。默認(rèn)情況下,子組件在達(dá)到退出狀態(tài)后仍然掛載。注意沒(méi)有特定的顯示狀態(tài)。啟用或禁用轉(zhuǎn)換。注意如果提供超時(shí),仍將其用作回退。
導(dǎo)語(yǔ)
新的一年,換了新的工作也算是新的開(kāi)始吧,最近對(duì)頁(yè)面的切換動(dòng)畫(huà)比較感興趣,所以就以React Transition Group庫(kù)為切入口做一些深入的理解吧。
安裝# npm npm install react-transition-group --save # yarn yarn add react-transition-group
官方提供三個(gè)組件,分別為 Transition, CSSTransition, TransitonGroup。
這一章主要介紹下 Transition 組件。
Transition 組件允許您使用簡(jiǎn)單的聲明性API描述從一個(gè)組件狀態(tài)到另一個(gè)組件狀態(tài)的轉(zhuǎn)換。最常見(jiàn)的是,它用于動(dòng)畫(huà)組件的安裝和卸載,但也可以用于描述就地的過(guò)渡狀態(tài)。
默認(rèn)情況下,轉(zhuǎn)換組件不改變它呈現(xiàn)的組件的行為,它只跟蹤組件的“進(jìn)入”和“退出”狀態(tài)。由你來(lái)賦予這些狀態(tài)意義和效果。例如,我們可以在組件進(jìn)入或退出時(shí)向其添加樣式。
如前所述,轉(zhuǎn)換組件本身不會(huì)對(duì)其子組件執(zhí)行任何操作。它所做的是隨時(shí)間跟蹤轉(zhuǎn)換狀態(tài),以便在組件更改狀態(tài)時(shí)更新組件(例如通過(guò)添加樣式或類(lèi))。
在一個(gè)過(guò)渡中有四種主要狀態(tài):
entering
entered
exiting
exited
過(guò)渡狀態(tài)通過(guò)in屬性切換。當(dāng)為true時(shí),組件開(kāi)始“Enter”階段。在此階段中,組件將從當(dāng)前轉(zhuǎn)換狀態(tài)轉(zhuǎn)移到轉(zhuǎn)換期間的“進(jìn)入”狀態(tài),然后在完成轉(zhuǎn)換后再轉(zhuǎn)移到“進(jìn)入”狀態(tài)。
看完了基本介紹,下面來(lái)一個(gè)最基本的例子:
首先,創(chuàng)建我們的 Fade 組件
第一步:定義屬性
const duration = 300; const defaultStyle = { transition: `opacity ${duration}ms ease-in-out`, opacity: 0, } const transitionStyles = { entering: { opacity: 0 }, entered: { opacity: 1 }, }
第二步:定義組件
const Fade = (props) => ({(state) => ( ){props.children})}
Transition 組件的 in 屬性是一個(gè) boolean 值,由子組件傳入,用于控制子組件的狀態(tài),是否顯示。
我們的 Fade 組件創(chuàng)建好了,接下來(lái)就該試試好不好用了,我們創(chuàng)建一個(gè)新的組件,定義一些簡(jiǎn)單的樣式,定義一個(gè)內(nèi)部狀態(tài)show,傳入Fade 組件,然后使用 Fade 組件包裹它。
export default class App extends Component { state = { show: true } render () { const circle = { margin: 2, width: 100, height: 100, position: "absolute", display: "inline-block", left: 100, boxShadow: "0px 1px 2px #999", textShadow: "0px 1px 2px #999", lineHeight: "100px", textAlign: "center", color: "white", fontSize: 10, } return (效果圖: Props) } } this.setState(state=>({show: !state.show}))}> Show
我們來(lái)看看 Trasition 組件的其它常用屬性。
children可以使用一個(gè)函數(shù)來(lái)代替 React 元素,通過(guò)調(diào)用這個(gè)函數(shù)與當(dāng)前過(guò)渡狀態(tài)(‘enter’、‘enter’、‘exit’、‘exited’、‘unmount’),可用于將特定于上下文的props應(yīng)用于組件。
type: Function | element
required
用于顯示組件;觸發(fā)進(jìn)入或退出狀態(tài)
type: boolean
default: false
默認(rèn)情況下,子組件與父轉(zhuǎn)換組件一起立即掛載。如果你想“延遲掛載”第一個(gè)in={true}上的組件,你可以設(shè)置mountOnEnter。在第一次進(jìn)入轉(zhuǎn)換之后,組件將保持掛載狀態(tài),即使在“退出”狀態(tài)下也是如此,除非你還指定unmountOnExit。
type: boolean
default: false
默認(rèn)情況下,子組件在達(dá)到“退出”狀態(tài)后仍然掛載。如果你希望在組件退出后卸載組件,請(qǐng)?jiān)O(shè)置unmountOnExit。
type: boolean
default: false
通常,如果組件掛載時(shí)顯示組件,則該組件不進(jìn)行轉(zhuǎn)換。如果您希望在第一個(gè)掛載集上進(jìn)行轉(zhuǎn)換,則顯示為true,并且組件將在< transition >掛載后立即進(jìn)行轉(zhuǎn)換。
注意:沒(méi)有特定的“顯示”狀態(tài)。appear只添加一個(gè)額外的enter轉(zhuǎn)換。
type: boolean
default: false
啟用或禁用enter轉(zhuǎn)換。
type: boolean
default: true
啟用或禁用exit轉(zhuǎn)換。
type: boolean
default: true
轉(zhuǎn)換的持續(xù)時(shí)間,單位為毫秒。
timeout={{ enter: 300, exit: 500, }}
type: number | { enter?: number, exit?: number }
addEndListener添加自定義轉(zhuǎn)換結(jié)束觸發(fā)器。使用正在轉(zhuǎn)換的DOM節(jié)點(diǎn)和done回調(diào)調(diào)用。允許更細(xì)粒度的轉(zhuǎn)換結(jié)束邏輯。注意:如果提供超時(shí),仍將其用作回退。
addEndListener={(node, done) => { // use the css transitionend event to mark the finish of a transition node.addEventListener("transitionend", done, false); }}
type: Function
onEnter在應(yīng)用“輸入”狀態(tài)之前觸發(fā)的回調(diào)。提供了一個(gè)額外的參數(shù)isAppearing,以指示是否在初始掛載上出現(xiàn)了enter階段。
type: Function(node: HtmlElement, isAppearing: bool) -> void
default: function noop() {}
在應(yīng)用“輸入”狀態(tài)之前觸發(fā)的回調(diào)。提供了一個(gè)額外的參數(shù)isAppearing,以指示是否在初始掛載上出現(xiàn)了entering階段。
type: Function(node: HtmlElement, isAppearing: bool) -> void
default: function noop() {}
在應(yīng)用“輸入”狀態(tài)之前觸發(fā)的回調(diào)。提供了一個(gè)額外的參數(shù)isAppearing,以指示是否在初始掛載上出現(xiàn)了entered階段。
type: Function(node: HtmlElement, isAppearing: bool) -> void
default: function noop() {}
在應(yīng)用“退出”狀態(tài)之前觸發(fā)的回調(diào)。
type: Function(node: HtmlElement) -> void
default: function noop() {}
在應(yīng)用“退出”狀態(tài)之后觸發(fā)的回調(diào)。
type: Function(node: HtmlElement) -> void
default: function noop() {}
應(yīng)用“退出”狀態(tài)后觸發(fā)的回調(diào)。
type: Function(node: HtmlElement) -> void
default: function noop() {}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/101562.html
摘要:因?yàn)槠浣M件只是根據(jù)提供的及屬性,生成動(dòng)畫(huà)的數(shù)據(jù),業(yè)務(wù)應(yīng)用中拿到生成的數(shù)據(jù)后根據(jù)需要添加需要?jiǎng)赢?huà)的組件樣式。除了上述簡(jiǎn)單的動(dòng)畫(huà)應(yīng)用,在復(fù)雜動(dòng)畫(huà)的實(shí)現(xiàn)方面,表現(xiàn)非常優(yōu)越。 WEB應(yīng)用中動(dòng)畫(huà)很重要 不管是web應(yīng)用還是原生應(yīng)用,也不論是PC端應(yīng)用還是移動(dòng)端應(yīng)用,動(dòng)畫(huà)都扮演了一個(gè)重要的角色。 盡管動(dòng)畫(huà)并不會(huì)添加應(yīng)用的實(shí)際動(dòng)能,但一個(gè)好的動(dòng)畫(huà),一個(gè)流暢且優(yōu)雅,選擇在恰當(dāng)時(shí)機(jī)出現(xiàn)的動(dòng)畫(huà),能為應(yīng)用增...
摘要:動(dòng)畫(huà)庫(kù)這個(gè)庫(kù)包括個(gè)組件,今天做項(xiàng)目剛好用到了組件,記錄一下使用過(guò)程中的總結(jié),另外兩個(gè)組件用到了再做介紹。規(guī)定完成過(guò)渡效果需要多少秒或毫秒。規(guī)定速度效果的速度曲線。參考網(wǎng)址官方案例官網(wǎng)動(dòng)畫(huà)庫(kù)的新寫(xiě)法 react-transition-group動(dòng)畫(huà)庫(kù) 這個(gè)庫(kù)包括3個(gè)組件:Transition,CSSTransition,TransitonGroup,今天做項(xiàng)目剛好用到了Transitio...
摘要:動(dòng)畫(huà)庫(kù)這個(gè)庫(kù)包括個(gè)組件,今天做項(xiàng)目剛好用到了組件,記錄一下使用過(guò)程中的總結(jié),另外兩個(gè)組件用到了再做介紹。規(guī)定完成過(guò)渡效果需要多少秒或毫秒。規(guī)定速度效果的速度曲線。參考網(wǎng)址官方案例官網(wǎng)動(dòng)畫(huà)庫(kù)的新寫(xiě)法 react-transition-group動(dòng)畫(huà)庫(kù) 這個(gè)庫(kù)包括3個(gè)組件:Transition,CSSTransition,TransitonGroup,今天做項(xiàng)目剛好用到了Transitio...
摘要:一一個(gè)官網(wǎng)提供的動(dòng)畫(huà)過(guò)度庫(kù)。安裝而官方提供的三個(gè)組建。下面來(lái)看一個(gè)例子效果是增加和刪除列表項(xiàng)中的一個(gè),產(chǎn)生漸入漸失的效果說(shuō)白了也就是多個(gè)或者組合的效果。 一、react-transition-group 一個(gè)官網(wǎng)提供的動(dòng)畫(huà)過(guò)度庫(kù)。 搜索了網(wǎng)上關(guān)于react動(dòng)畫(huà)的,很多的答案都是很久以前的了老版本了,而現(xiàn)在官方提供的是叫react-transition-group 它是以前兩個(gè)的合體版本...
摘要:導(dǎo)語(yǔ)上一篇文章給大家簡(jiǎn)單演示了組件,今天給大家介紹一下的第二個(gè)組件組件。在組件淡入,進(jìn)場(chǎng)出場(chǎng)時(shí),組件應(yīng)用了一系列名來(lái)對(duì)這些動(dòng)作進(jìn)行描述。在動(dòng)畫(huà)完成后,原改變?yōu)楸砻鹘M件動(dòng)畫(huà)已經(jīng)應(yīng)用完成并加載完成。組件的回調(diào)函數(shù),當(dāng)組件或時(shí)會(huì)立即調(diào)用。 導(dǎo)語(yǔ) 上一篇文章給大家簡(jiǎn)單演示了 Transition組件,今天給大家介紹一下 React Transition Group 的第二個(gè)組件:CSSTran...
閱讀 3933·2021-11-11 11:02
閱讀 3649·2021-10-11 10:57
閱讀 3778·2021-09-22 16:00
閱讀 2098·2021-09-02 15:15
閱讀 1484·2019-08-30 15:56
閱讀 1172·2019-08-30 15:54
閱讀 2964·2019-08-30 12:43
閱讀 3709·2019-08-29 16:06