react中如何使用动画效果

在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类型 
}    

猜你喜欢

转载自www.cnblogs.com/l8l8/p/9496791.html