【发布时间】:2023-03-19 18:45:01
【问题描述】:
我目前有一个仪表板类型的应用程序,它可以从多个松弛通道中提取消息并显示没有任何回复或表情符号的消息。您可以更改要查看的频道。
目前,父状态如下所示:
state = {
selected_channel: window.localStorage.getItem( 'last-slack-ch' ) || 'ABC123'
selected_date: new Date(),
channels: {},
items: [],
slack_users: {},
settings: {
seconds_per_slack_messages_pull: 1
},
atBottom: false
}
在提取消息...或items 后,我将该数组传递给组件ItemsContainer。
这是ItemsContainer中的渲染方法
render() {
return (
<div className="items-container">
{
this.props.items.length > 0 ?
<ReactCSSTransitionGroup
transitionName='item'
transitionEnterTimeout={500}
transitionLeaveTimeout={500}>
{
this.props.items.map( t => {
return (
<Item
key={ t.usr + '_' + t.ts }
task={ t }
user={ this.props.slack_users[ t.usr ] }
settings={ this.props.settings }
/>
)
} )
}
</ReactCSSTransitionGroup>
:
<p className='nothing-found'>No items were found in channel: { this.props.selected_channel }</p>
}
</div>
);
}
我目前面临的问题是某些事件我不想进行过渡。诸如:初始页面加载和切换频道。
我尝试将一些道具传递给ItemsContainer,这将决定ReactCSSTransitionGroup 的transitionName...但事情并没有真正发挥作用。
有人有这方面的经验吗?
【问题讨论】:
-
您是否尝试过
transitionEnter={false}或transitionLeave={false}禁用动画? reactjs.org/docs/animation.html#disabling-animations -
不会完全禁用过渡。当有新消息进来时,我仍然需要转换。@chin8628
标签: reactjs react-transition-group