この記事では、React 公式 Web サイトのアニメーション ライブラリ (react-transition-group) の新しい書き方を主に紹介します。必要な友達はそれを参照できるように共有します。 transition-group 公式サイトが提供するアニメーショントランジションライブラリです。
反応アニメーションについてインターネットで検索したところ、答えの多くはずっと前の古いバージョンからのもので、現在の公式のものは react-transition-group
と呼ばれるもので、前の 2 つの記録を作成したので、必要な人にいくつかのヒントも提供しました。
1. インストール
# npm npm install react-transition-group --save # yarn yarn add react-transition-group
react-transition-group
它是以前两个的合体版本,所以写下这个记录一下,同时也给一些需要的猿门给一些小的提示。1、安装
//自己简单的封装了一个,该有的参数都由了,可以自行粘贴在自己的代码里面去试试。 class Fade extends React.Component { constructor(props) { super(props); } done =() => { // console.log('结束了') } addaddEndListener = (node) => { //原生时间transition运动的事件 node.addEventListener('transitionend', this.done, false); } // 三个进入状态的事件,可以做你想做的事情 onEnter = (node, isAppearing) => { console.log(isAppearing, 'onEnter') } onEntering = (node, isAppearing) => { console.log(isAppearing, 'onEntering') } onEntered = (node, isAppearing) => { console.log(isAppearing, 'onEntered') } // 三个退出的状态的事件 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, } // 上面的都是基本参数,样式的转变以及时间的设定,具体的可以看官网文档 // 样式也可以写成className 例如<mycomponent></mycomponent> return ( <transition> { state => { console.log(state, '###') //你可以很直观的看到组件加载和卸载时候的状态 return( <p> {this.props.children} </p> ) } } </transition> ); } }
而官方提供的三个组建Transition
,CSSTransition
,TransitonGroup
。
Transition
过渡组件(Transiton)允许您用一个简单的声明性API描述随着时间的推移从一个组件状态到另一个组件状态的转换。最常用的是用来动画一个组件的安装和卸载,但也可以用来描述在适当的过渡状态。默认情况下,该组件不会更改其呈现的组件的行为,它只跟踪组件的“进入”和“退出”的状态。由你来为这些状态定义效果。(翻译)
实际的情况就是你如果只写这个组件是没有任何的效果的,就和你写一个p一样。所以你需要给他们赋予一些参数才可以。例如下面这个例子
entering entered exiting exited
其中上面的状态有四种:
let num = 1; class Dnd extends React.Component { state = { ins: true, current: 1, dom: <p> ceshi weizhi {num} </p> } handle = (bool) => { this.setState({ test: !bool }) } end = () => { const that = this; num = num + 1; setTimeout(function () { that.setState({ test: true, dom: <p> 888888 {num} </p> }) }, 500) } render () { const { location } = this.props const { test } = this.state; return ( <mainlayout> <button>点击transition</button> <fade> {this.state.dom} </fade> </mainlayout> ) } } // 效果是每次点击按钮都会进行一次进场和出场的动画。也可以自行衍生。
组件的初始化状态都停留在exited
上面就是写的一个最基本的例子,下面是如何的调用
这个组件大概就是这样的,这样适合写一个tab类型的页面,在切换的时候可以展示不同的dom
state = { star: false } <button>start</button> <csstransition> <p>⭐</p> </csstransition>
CSSTransition
此组件是在转换的出现、进入、退出阶段应用一对类名(也就是className),靠这个来激活CSS动画。所以参数和平时的className不同,参数为:classNames
参数:(主要)in, timeout, unmountOnExit, classNames, 用法同Transition。看如下例子:
.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; }
效果是点击button 显示星星,在点击消失星星的动画!
参数classNames="star"
公式に提供されている 3 つのコンポーネントは、Transition
、CSSTransition
、および TransitonGroup
です。
Transition
Transition コンポーネント (Transiton) を使用すると、単純な宣言型 API を使用して、時間の経過とともにあるコンポーネントの状態から別のコンポーネントの状態への遷移を記述することができます。コンポーネントのインストールとアンインストールをアニメーション化するために最も一般的に使用されますが、必要に応じて遷移状態を説明するために使用することもできます。デフォルトでは、このコンポーネントはレンダリングするコンポーネントの動作を変更せず、コンポーネントの「開始」状態と「終了」状態を追跡するだけです。これらの状態の影響を定義するのはあなた次第です。 (訳)
実際のところ、このコンポーネントだけを書いても、pを書いた場合と同様に効果はありません。したがって、いくつかのパラメータを与える必要があります。たとえば、次の例1、星星显示 对应的class为star-enter star-enter-active 动画走完为star-enter-done 2、星星消失 对应的class为star-exit star-exit-active 动画走完为star-exit-doneには 4 つの状態があります:
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, }}コンポーネントの初期化状態は
exited
のままです上記は最も基本的な例であり、以下はそれを呼び出す方法です。
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 ( <p> <transitiongroup> {items.map(({ id, text }) => ( <csstransition> <p> <button> { this.setState(state => ({ items: state.items.filter( item => item.id !== id ), })); }} > × </button> {text} </p> </csstransition> ))} </transitiongroup> <button> { const text = prompt('Enter some text'); if (text) { this.setState(state => ({ items: [ ...state.items, { id: 1123, text }, ], })); } }} > Add Item </button> </p> ); } }
.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; }
CSSTransition
このコンポーネントは、遷移の外観、開始、終了段階でクラス名のペア (つまり、className) を適用し、これに依存して CSS アニメーションをアクティブにします。したがって、パラメータは通常の className とは異なります: classNames
1、component default 'p' 也就是TransitionGroup渲染出来的标签为p,也可以就行更改,例如component="span" 渲染出来的就是span标签了 2、children 相当于你给的组件,可以是字符串或者自定义组件等。 3、appear 写在TransitionGroup里面相当于开启或者禁止里面的Transition || CSSTransition 方便写的作用
その効果は、ボタンをクリックすると星が表示され、星のアニメーションをクリックすると消えるというものです。 パラメータ
classNames="star"
を指定すると、コンポーネントは次のように対応する状態の className を見つけます rrreee
実行順序はrrreee
公式サイトの説明に従うと、興味があれば、ぜひ試してみてください。rrreee
各ステージのフック機能はTransitionと同じですTransitionGroup
グループを見ればリスト形式のアニメーションであることが分かります!しかし、公式 Web サイトを読んだ後、TransitionGroup はいかなる形式のアニメーションも提供していないことがわかりました。特定のアニメーションはラップした CSSTransition のアニメーションに依存するため、リスト内でさまざまな種類のアニメーションを作成できます。例を見てみましょう
cssrrreeeその効果は、リスト項目の 1 つを追加および削除し、フェード効果を生み出すことです。端的に言えば、複数の Transition または CSSTransition の組み合わせの効果です。
ただし、いくつかのパラメーターも提供されます🎜rrreee🎜 3 つのコンポーネントのおおよその特性は次のとおりです。残りはすべてあなたの開発次第です!いくつかの小さな例も含めて説明しますので、楽しみにしていてください。 。 。 。 🎜🎜以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。 🎜🎜関連する推奨事項: 🎜🎜🎜ネイティブ JS は window.scrollTo() に基づいて垂直スクロール アニメーション ツール関数をカプセル化します🎜🎜🎜🎜🎜Jquery は読み込み遷移マスクを追加します🎜🎜以上がReact公式サイトアニメーションライブラリ(react-transition-group)の新しい書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック









