javascript - React - 动画数组中的第一个新元素
问题描述
我想为数组中的第一个对象设置动画。
作为一个例子,我在我的州有这个数组。
this.state = {
elements: []
}
我首先通过 post 请求填充数组,所以看起来像这样:
await this.httpService.getWithAuthorization<Array<BoardElementViewModel>>(`/boards/${this.props.activeBoardState.boardId}/elements`)
.then((response: Array<BoardElementViewModel>) => {
this.setState(() => ({
elements: response
}));
})
.catch((e) => console.warn(e));
在这一点上,应该没有任何动画。
我像这样渲染这个数组:
render() {
return (
<div className="board-elements">
{this.props.activeBoardState.boardElements.map((element: BoardElementViewModel, index) => {
return (
<BoardElement
key={index}
element={element}/>
)
})}
</div>
)
}
我们现在应该有一个元素列表,我现在要做的是在列表顶部添加一个新元素。所以我使用 unshift 向数组中添加一个新元素,如下所示:
const response = {} //getting response left out of example.
let elements = this.state.elements;
elements.unshift(response);
this.setState(() => ({
elements: elements
}));
该元素现在将0
位于数组中并位于列表顶部。但是,当我现在尝试为“新”元素设置动画时,动画将应用于最后一个元素。这是因为那是刚刚安装的元素,其他元素只是被替换,因此它们没有发生任何事情。
看看这个 GIF:https ://gyazo.com/7d19ba9be962f3d475e59fc8e474da30
忽略加载的东西,但这很好地说明了我想要实现的目标。
我如何在 React 中做到这一点?
注意:我知道如何动画元素,动画数组中的最后一个元素很容易,我只需要知道如何动画第一个元素。
解决方案
推荐阅读
- amazon-web-services - AWS cloudwatch 中的 web-1.log 与 web.stdout.log
- reactjs - 如何清除焦点上的数字输入字段
- sql-server - EFCore Scaffold-DbContext SqlClient.SqlException (0x80131904):列名无效
- python - 使用编码/数据库 fecthall 方法的值替换
- python - 从维基百科获取和解析数据
- mysql - MySQL:添加外键约束失败
- wordpress - 如何将 Wordpress 类别转换为自定义帖子类型?
- hotchocolate - 使用 Hot Chocolate 时,有没有办法实现按请求事务处理的中间件?
- python - 我无法从 URL 中获取文本 (BeautifullSoup)
- html - 在 Django 模板上使用字符串参数