在react中想要加入動畫效果
需要引入
import {CSSTransitionGroup} from 'react-transition-group' //加入react 動畫包 import img from './img/a.jpg' //引入圖片 svg也是一樣 import PropTypes from "prop-types"; //載入prop-types包 //作用 :用來規范傳遞的props的屬性 <CSSTransitionGroup transitionName={{'enter':'slideInLeft','leave':'slideOutLeft'}} transitionEnterTimeout={500} transitionLeaveTimeout={300}> //動畫標簽組件 加入屬性 { this.state.flag?<div className='animated'>asdfasdf <One /></div>:'' } </CSSTransitionGroup>
import React, { Component } from 'react'; import logo from './logo.svg'; import './App.scss'; import PropTypes from "prop-types"; //載入proptypes包 可以用來實現子孫組件的傳值 不需要通過中間的組件(子組件) //不需要下載 import One from "./One" import { CSSTransitionGroup } from 'react-transition-group' // ES6 //動畫包 需要下載 import img from "./img/a.jpg" //引入圖片 class App extends Component { constructor(props){ super(props); this.state={ flag:true } this.change=this.change.bind(this) } change(){ this.setState({ flag:!this.state.flag }) } getChildContext(){ return { n:5 } } render() { return ( <div className="App"> <p>asdf <img src={img} /> </p> <button onClick={this.change}>change</button> <CSSTransitionGroup transitionName={{'enter':'slideInLeft','leave':'slideOutLeft'}} //可以替換成一個字符串 樣式在css里面寫入 transitionEnterTimeout={500} transitionLeaveTimeout={300}> { this.state.flag?<div className='animated'>asdfasdf <One /></div>:'' //className 必須寫animated 在transitionName是對象的形式。 } </CSSTransitionGroup> </div> ) } } export default App; App.childContextTypes={ n:PropTypes.number//規定了App.里給孫組件傳值的值類型為Number類型 }