成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

react 官網(wǎng)動(dòng)畫庫(kù)(react-transition-group)的新寫法

ky0ncheng / 1191人閱讀

摘要:一一個(gè)官網(wǎng)提供的動(dòng)畫過(guò)度庫(kù)。安裝而官方提供的三個(gè)組建。下面來(lái)看一個(gè)例子效果是增加和刪除列表項(xiàng)中的一個(gè),產(chǎn)生漸入漸失的效果說(shuō)白了也就是多個(gè)或者組合的效果。

一、react-transition-group 一個(gè)官網(wǎng)提供的動(dòng)畫過(guò)度庫(kù)。

搜索了網(wǎng)上關(guān)于react動(dòng)畫的,很多的答案都是很久以前的了老版本了,而現(xiàn)在官方提供的是叫react-transition-group 它是以前兩個(gè)的合體版本,所以寫下這個(gè)記錄一下,同時(shí)也給一些需要的猿門給一些小的提示。
1、安裝

# npm
npm install react-transition-group --save

# yarn
yarn add react-transition-group

而官方提供的三個(gè)組建Transition,CSSTransition,TransitonGroup。

Transition

過(guò)渡組件(Transiton)允許您用一個(gè)簡(jiǎn)單的聲明性API描述隨著時(shí)間的推移從一個(gè)組件狀態(tài)到另一個(gè)組件狀態(tài)的轉(zhuǎn)換。最常用的是用來(lái)動(dòng)畫一個(gè)組件的安裝和卸載,但也可以用來(lái)描述在適當(dāng)?shù)倪^(guò)渡狀態(tài)。默認(rèn)情況下,該組件不會(huì)更改其呈現(xiàn)的組件的行為,它只跟蹤組件的“進(jìn)入”和“退出”的狀態(tài)。由你來(lái)為這些狀態(tài)定義效果。(翻譯)
實(shí)際的情況就是你如果只寫這個(gè)組件是沒(méi)有任何的效果的,就和你寫一個(gè)div一樣。所以你需要給他們賦予一些參數(shù)才可以。例如下面這個(gè)例子

//自己簡(jiǎn)單的封裝了一個(gè),該有的參數(shù)都由了,可以自行粘貼在自己的代碼里面去試試。
class Fade extends React.Component {
  constructor(props) {
    super(props);
  }
  done =() => {
    // console.log("結(jié)束了")
  }
  addaddEndListener = (node) => { //原生時(shí)間transition運(yùn)動(dòng)的事件
    node.addEventListener("transitionend", this.done, false);
  }

  // 三個(gè)進(jìn)入狀態(tài)的事件,可以做你想做的事情
  onEnter = (node, isAppearing) => {
    console.log(isAppearing, "onEnter")
  }
  onEntering = (node, isAppearing) => {
    console.log(isAppearing, "onEntering")
  }
  onEntered = (node, isAppearing) => {
    console.log(isAppearing, "onEntered")
  }

  // 三個(gè)退出的狀態(tài)的事件
  onExit = (node) => {
    console.log("onExit")
  }
  onExiting = () => {
    console.log("onExiting")
  }
  onExited = () => {
    console.log("onExited")
    this.props.self()
  }
  render() {
    const { in: inProp, dur} = this.props;
    const defaultStyle = {
      transition: `transform ${300}ms ease-in-out, opacity ${300}ms ease-in-out`,
      transform: "translateX(100px)",
      opacity: "0"
    }

    const transitionStyles = {
      entering: { transform: "translateX(100px)", opacity: "0"},
      entered:  { transform: "translateX(0px)", opacity: "1" },
      exiting: {transform: "translateX(0px)", opacity: "1"},
      exited: {transform: "translateX(0px)", opacity: "0"}
    };
    const duration = {
      enter: 300,
      exit: 300,
    }
    // 上面的都是基本參數(shù),樣式的轉(zhuǎn)變以及時(shí)間的設(shè)定,具體的可以看官網(wǎng)文檔
    // 樣式也可以寫成className 例如
    return (
      
        {
          state => {
            console.log(state, "###") //你可以很直觀的看到組件加載和卸載時(shí)候的狀態(tài)
            return(
              
{this.props.children}
) } }
); } }

其中上面的狀態(tài)有四種:

entering
entered
exiting
exited

組件的初始化狀態(tài)都停留在exited
上面就是寫的一個(gè)最基本的例子,下面是如何的調(diào)用

let num = 1;
class Dnd extends React.Component {
  state = {
    ins: true,
    current: 1,
    dom: 
ceshi weizhi {num}
} handle = (bool) => { this.setState({ test: !bool }) } end = () => { const that = this; num = num + 1; setTimeout(function () { that.setState({ test: true, dom:
888888 {num}
}) }, 500) } render () { const { location } = this.props const { test } = this.state; return ( {this.state.dom} ) } } // 效果是每次點(diǎn)擊按鈕都會(huì)進(jìn)行一次進(jìn)場(chǎng)和出場(chǎng)的動(dòng)畫。也可以自行衍生。
這個(gè)組件大概就是這樣的,這樣適合寫一個(gè)tab類型的頁(yè)面,在切換的時(shí)候可以展示不同的dom
CSSTransition

此組件是在轉(zhuǎn)換的出現(xiàn)、進(jìn)入、退出階段應(yīng)用一對(duì)類名(也就是className),靠這個(gè)來(lái)激活CSS動(dòng)畫。所以參數(shù)和平時(shí)的className不同,參數(shù)為:classNames
參數(shù):(主要)in, timeout, unmountOnExit, classNames, 用法同Transition??慈缦吕樱?/p>

state  = {
    star: false
}




  
?

效果是點(diǎn)擊button 顯示星星,在點(diǎn)擊消失星星的動(dòng)畫!
參數(shù)classNames="star", 組件會(huì)找對(duì)應(yīng)狀態(tài)的className, 如下

.star {
    display: inline-block;
    margin-left: 0.5rem;
    transform: scale(1.25);
  }
  .star-enter {
    opacity: 0.01;
    transform: translateY(-100%) scale(0.75);
  }
  .star-enter-active {
    opacity: 1;
    transform: translateY(0%) scale(1.25);
    transition: all 300ms ease-out;
  }
  .star-exit {
    opacity: 1;
    transform: scale(1.25);
  }
  .star-exit-active {
    opacity: 0;
    transform: scale(4);
    transition: all 300ms ease-in;
  }

依次執(zhí)行的順序是

1、星星顯示 對(duì)應(yīng)的class為star-enter star-enter-active 動(dòng)畫走完為star-enter-done
2、星星消失 對(duì)應(yīng)的class為star-exit  star-exit-active 動(dòng)畫走完為star-exit-done

如果按照官網(wǎng)的解釋就是如下, 有興趣的可以自行去試一試。

classNames={{
 appear: "my-appear",
 appearActive: "my-active-appear",
 enter: "my-enter",
 enterActive: "my-active-enter",
 enterDone: "my-done-enter,
 exit: "my-exit",
 exitActive: "my-active-exit",
 exitDone: "my-done-exit,
}}

每個(gè)階段的鉤子函數(shù)同Transition.

TransitionGroup

一看group就知道肯定是列表形態(tài)的動(dòng)畫了!但是看了官網(wǎng)后知道,TransitionGroup不提供任何形式的動(dòng)畫,具體的動(dòng)畫取決與你包裹的Transition || CSSTransition的動(dòng)畫,所以你可以在列表里面做出不同類型的動(dòng)畫出來(lái)。下面來(lái)看一個(gè)例子

class List extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      items: [
        { id: 1, text: "Buy eggs" },
        { id: 2, text: "Pay bills" },
        { id: 3, text: "Invite friends over" },
        { id: 4, text: "Fix the TV" },
      ]
    }
  }

  render() {
    const { items } = this.state; 
    return (
      
{items.map(({ id, text }) => (
{text}
))}
); } }

css

.fade-enter {
    opacity: 0.01;
  }
  .fade-enter-active {
    opacity: 1;
    transition: opacity 500ms ease-in;
  }
  .fade-exit {
    opacity: 1;
  }
  .fade-exit-active {
    opacity: 0.01;
    transition: opacity 500ms ease-in;
  }

效果是增加和刪除列表項(xiàng)中的一個(gè),產(chǎn)生漸入漸失的效果!說(shuō)白了也就是多個(gè)Transition 或者CSSTransition組合的效果。
但是也提供一些參數(shù)

1、component  default "div" 也就是TransitionGroup渲染出來(lái)的標(biāo)簽為div,也可以就行更改,例如component="span" 渲染出來(lái)的就是span標(biāo)簽了
2、children 相當(dāng)于你給的組件,可以是字符串或者自定義組件等。
3、appear  寫在TransitionGroup里面相當(dāng)于開啟或者禁止里面的Transition || CSSTransition 方便寫的作用

三個(gè)組件大概的特性就是這些。剩下的全靠自己去開發(fā)了!后續(xù)會(huì)錄入一些小的例子來(lái)講解,敬請(qǐng)期待。。。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95925.html

相關(guān)文章

  • react-transition-group動(dòng)畫庫(kù)Transition組件使用

    摘要:動(dòng)畫庫(kù)這個(gè)庫(kù)包括個(gè)組件,今天做項(xiàng)目剛好用到了組件,記錄一下使用過(guò)程中的總結(jié),另外兩個(gè)組件用到了再做介紹。規(guī)定完成過(guò)渡效果需要多少秒或毫秒。規(guī)定速度效果的速度曲線。參考網(wǎng)址官方案例官網(wǎng)動(dòng)畫庫(kù)的新寫法 react-transition-group動(dòng)畫庫(kù) 這個(gè)庫(kù)包括3個(gè)組件:Transition,CSSTransition,TransitonGroup,今天做項(xiàng)目剛好用到了Transitio...

    charles_paul 評(píng)論0 收藏0
  • react-transition-group動(dòng)畫庫(kù)Transition組件使用

    摘要:動(dòng)畫庫(kù)這個(gè)庫(kù)包括個(gè)組件,今天做項(xiàng)目剛好用到了組件,記錄一下使用過(guò)程中的總結(jié),另外兩個(gè)組件用到了再做介紹。規(guī)定完成過(guò)渡效果需要多少秒或毫秒。規(guī)定速度效果的速度曲線。參考網(wǎng)址官方案例官網(wǎng)動(dòng)畫庫(kù)的新寫法 react-transition-group動(dòng)畫庫(kù) 這個(gè)庫(kù)包括3個(gè)組件:Transition,CSSTransition,TransitonGroup,今天做項(xiàng)目剛好用到了Transitio...

    gityuan 評(píng)論0 收藏0
  • React動(dòng)畫實(shí)現(xiàn)原理

    摘要:動(dòng)畫的實(shí)現(xiàn)原理要實(shí)現(xiàn)動(dòng)畫,究其根本,最終的落地依然是操作從而達(dá)到頁(yè)面呈現(xiàn)動(dòng)畫的目的。 聲明: 當(dāng)前為草稿階段。然后有人可以指引下怎么寫草稿文章么~ web動(dòng)畫的實(shí)現(xiàn)原理 web動(dòng)畫的實(shí)現(xiàn),最終都是需要操作dom。CSS動(dòng)畫,是給相應(yīng)的dom元素添加動(dòng)畫className ; JS動(dòng)畫,則是通過(guò)定時(shí)器或其他手段,不斷更改dom元素屬性值,達(dá)到動(dòng)畫的目的。 React動(dòng)畫的實(shí)現(xiàn)原理 Re...

    mrli2016 評(píng)論0 收藏0
  • React應(yīng)用“動(dòng)”起來(lái)

    摘要:因?yàn)槠浣M件只是根據(jù)提供的及屬性,生成動(dòng)畫的數(shù)據(jù),業(yè)務(wù)應(yīng)用中拿到生成的數(shù)據(jù)后根據(jù)需要添加需要?jiǎng)赢嫷慕M件樣式。除了上述簡(jiǎn)單的動(dòng)畫應(yīng)用,在復(fù)雜動(dòng)畫的實(shí)現(xiàn)方面,表現(xiàn)非常優(yōu)越。 WEB應(yīng)用中動(dòng)畫很重要 不管是web應(yīng)用還是原生應(yīng)用,也不論是PC端應(yīng)用還是移動(dòng)端應(yīng)用,動(dòng)畫都扮演了一個(gè)重要的角色。 盡管動(dòng)畫并不會(huì)添加應(yīng)用的實(shí)際動(dòng)能,但一個(gè)好的動(dòng)畫,一個(gè)流暢且優(yōu)雅,選擇在恰當(dāng)時(shí)機(jī)出現(xiàn)的動(dòng)畫,能為應(yīng)用增...

    xiyang 評(píng)論0 收藏0
  • react進(jìn)階漫談

    摘要:父組件向子組件之間非常常見,通過(guò)機(jī)制傳遞即可。我們應(yīng)該聽說(shuō)過(guò)高階函數(shù),這種函數(shù)接受函數(shù)作為輸入,或者是輸出一個(gè)函數(shù),比如以及等函數(shù)。在傳遞數(shù)據(jù)的時(shí)候,我們可以用進(jìn)一步提高性能。 本文主要談自己在react學(xué)習(xí)的過(guò)程中總結(jié)出來(lái)的一些經(jīng)驗(yàn)和資源,內(nèi)容邏輯參考了深入react技術(shù)棧一書以及網(wǎng)上的諸多資源,但也并非完全照抄,代碼基本都是自己實(shí)踐,主要為平時(shí)個(gè)人學(xué)習(xí)做一個(gè)總結(jié)和參考。 本文的關(guān)鍵...

    neuSnail 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<