css - 卸载组件时如何向呈现的 JSX 元素添加新的 CSS 类
问题描述
在这个组件中,div 已成功进入带有动画的 DOM。现在,当我从 DOM 中删除它们时,我想实现一个动画 - 但它不起作用。这个想法是在 JSX 元素中添加另一个类,当它被删除时——但是这个添加对我不起作用。任何帮助将不胜感激。这是我的代码:
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import classes from './BurgerIngredient.css';
class BurgerIngredient extends Component {
state={
meat: <div className={classes.Meat}></div>,
cheese: <div className={classes.Cheese}></div>,
bacon: <div className={classes.Bacon}></div>,
salad: <div className={classes.Salad}></div>
}
componentWillUnmount(){
//HERE I'M TRYING TO ADD '.removeBaconMeat' CLASS FOR THE 'MEAT' DIV, BUT IT'S NOW WORKING.
//THE GOAL WAS TO ADD'.removeBaconMeat' CLASS TO THE DIV SO IT WILL ADD ANOTHER ANIMATION WHEN THIS COMPONENT ( = DIV ELEMENT) IS UNMOUNTING (=REMOVED FROM DOM)
if(this.props.type === 'meat'){
const removedMeat = {...this.state.meat};
removedMeat.props.className = removedMeat.props.className + ' ' + classes.removeBaconMeat;
this.setState({meat: removedMeat});
}
}
render(){
let ingredient = null;
switch(this.props.type){
case ('bread-bottom'):
ingredient = <div className={classes.BreadBottom}></div>;
break;
case ('bread-top'):
ingredient = (
<div className={classes.BreadTop}>
<div className={classes.Seeds1}></div>
<div className={classes.Seeds2}></div>
</div>
);
break;
case('meat'):
ingredient = this.state.meat;
break;
case('cheese'):
ingredient = this.state.cheese;
break;
case('bacon'):
ingredient = this.state.bacon;
break;
case('salad'):
ingredient = this.state.salad;
break;
default:
ingredient = null;
}
return ingredient;
}
};
BurgerIngredient.propTypes = {
type: PropTypes.string.isRequired
}
export default BurgerIngredient;
解决方案
推荐阅读
- flutter - Flutter 代码测试中的随机数错误
- oracle-apex - 甘特图 Oracle Apex
- docker - dcproj 项目的 docker COPY 命令出错
- javascript - 使用 React JS 和 Laravel 将带有图像文件的 POST 请求发送到数据库时出现内部服务器错误
- javascript - 无效的拖放区元素
- c++ - Visual Studio 中的 OpenCV 在运行一次后崩溃
- angular - Okta 身份验证登录
- regex - 如何在 Linux 中读取文件并获取某些行
- django - 在 docker 中为 django 和 postgres 设置 db_password
- reactjs - 使用 react formik 进行空间验证