Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 像Spliting.js和anime.js这样的动画库不适用于React js_Javascript_Reactjs_Animation_Anime.js - Fatal编程技术网

Javascript 像Spliting.js和anime.js这样的动画库不适用于React js

Javascript 像Spliting.js和anime.js这样的动画库不适用于React js,javascript,reactjs,animation,anime.js,Javascript,Reactjs,Animation,Anime.js,好的,我已经尝试了两个动画库,第一个和第二个,都可以在vanilla js上正常工作,但在react js上失败,你知道为什么吗?错误没有意义。请尝试这两个包的基本npm安装,并尝试在react js项目中使用它们,这两个包都不起作用。有什么原因吗?如何在react js中实际使用这些库?我猜这与React的ReactDOM有关更改DOM元素,从而在动画库找到它们之前删除所需的元素 要重新创建我的场景: 请尝试运行一个简单的react js项目,并尝试逐个添加这两个动画库。要在react应用程序

好的,我已经尝试了两个动画库,第一个和第二个,都可以在vanilla js上正常工作,但在react js上失败,你知道为什么吗?错误没有意义。请尝试这两个包的基本npm安装,并尝试在react js项目中使用它们,这两个包都不起作用。有什么原因吗?如何在react js中实际使用这些库?我猜这与React的ReactDOM有关更改DOM元素,从而在动画库找到它们之前删除所需的元素

要重新创建我的场景:
请尝试运行一个简单的react js项目,并尝试逐个添加这两个动画库。要在react应用程序中使用anime.js,您可能需要查看一下东西。您可以通过执行那些实际上是钩子的库代码,而不是在组件声明本身中执行这些库代码


我的想法是使用它,它是从一开始就考虑到反应的。另一方面,react-anime只是anime.js的包装,它将其塑造成react的生命周期。

许多DOM操作库都不能与react一起开箱即用,react有自己的处理方式。您可以通过执行那些实际上是钩子的库代码,而不是在组件声明本身中执行这些库代码


我的想法是使用它,它是从一开始就考虑到反应的。另一方面,react anime只是anime.js的包装,它将其塑造成react的生命周期。

在react组件上使用anime.js时,您需要确保以DOM元素为目标,而不是虚拟DOM元素。这里有一个例子。它有点旧,但是afaik没有一个代码/逻辑被弃用,并且可以使用
useffect
hook轻松地转换为功能组件

从“React”导入React;
从“react dom”导入react dom;
从'react Transition group'导入{TransitionGroup,Transition};
从“动画”中导入动画;
导入“/style.scss”;
类ListItem扩展了React.Component{
构造函数(){
超级();
//创建LIDOM引用
this.liRef=React.createRef();
}
componentDidUpdate(){
this.animeRef=动画({
目标:this.liRef.current,
translateX:()=>{
如果(this.props.status=='entering'){
回报率['-100%,'0%'];
}else if(this.props.status==“退出”){
回报率['0%,'100%'];
}
},
弹性:()=>{
如果(this.props.status=='entering'){
返回300;
}else if(this.props.status==“退出”){
返回0;
}
},
持续时间:500
});
}
render(){
返回(
  • 嘿,我是项目编号{this.props.num}
  • ); } } 类应用程序扩展了React.Component{ 构造函数(){ 超级(); 此.state={ 数据:[1,2,3] }; } 添加(){ 这是我的国家({ …这个州, 数据:this.state.data.concat([this.state.data.length+1]) }); } 删除(){ 这是我的国家({ …这个州, 数据:this.state.data.slice(0,-1) }); } render(){ 返回( 加一 移除一个 { this.state.data.map(num=>( { (状态)=>{ 返回; } } ) ) } ); } } 如果您想了解更多有关此问题的信息,请参阅ReactDOM.render(文章)


    在React组件上使用anime.js时,如果您只想插入一个codesandbox,您需要确保以DOM元素为目标,而不是虚拟DOM元素。下面是一个示例。它有点旧,但似乎没有一个代码/逻辑被弃用,并且可以使用
    Useeffic轻松地转换为功能组件t
    hook

    从“React”导入React;
    从“react dom”导入react dom;
    从'react Transition group'导入{TransitionGroup,Transition};
    从“动画”中导入动画;
    导入“/style.scss”;
    类ListItem扩展了React.Component{
    构造函数(){
    超级();
    //创建LIDOM引用
    this.liRef=React.createRef();
    }
    componentDidUpdate(){
    this.animeRef=动画({
    目标:this.liRef.current,
    translateX:()=>{
    如果(this.props.status=='entering'){
    回报率['-100%,'0%'];
    }else if(this.props.status==“退出”){
    回报率['0%,'100%'];
    }
    },
    弹性:()=>{
    如果(this.props.status=='entering'){
    返回300;
    }else if(this.props.status==“退出”){
    返回0;
    }
    },
    持续时间:500
    });
    }
    render(){
    返回(
    
  • 嘿,我是项目编号{this.props.num}
  • ); } } 类应用程序扩展了React.Component{ 构造函数(){ 超级(); 此.state={ 数据:[1,2,3]