reactjs – 反应过渡组 – 不要给孩子们制作动画
发布时间:2020-12-15 09:30:48 所属栏目:百科 来源:网络整理
导读:我正在使用react-transition-group来为React中的路由器交换机设置动画: CSSTransitionGroup transitionName="zoom" transitionEnterTimeout={200} transitionLeaveTimeout={200} Switch key={key} location={this.props.location} Route path={this.props.m
我正在使用react-transition-group来为React中的路由器交换机设置动画:
<CSSTransitionGroup transitionName="zoom" transitionEnterTimeout={200} transitionLeaveTimeout={200}> <Switch key={key} location={this.props.location}> <Route path={this.props.match.url+"/tasks/:task_id"} component={SingleTask} key={'none'} /> <Route slug={this.props.match.params.project_slug} path={this.props.match.url+"/"} render={(params) => ( <ProjectIndex {...params} slug={this.props.match.params.project_slug} /> )} key={'none'} /> </Switch> </CSSTransitionGroup> 每当任何子路线发生变化时,它也会触发动画.因此,为了解决这个问题,我使用this.props.location.pathname获取路径名,然后使用一些非常粗略的代码来获取最后一个段: pathname = pathname.split('?')[0].split('/').filter(function (i) { return i !== ""}).slice(-1)[0]; …如果它是’任务’,’活动’或’注释,我只是将密钥设置为’noanimate'(即一些通用字符串,因此交换机不会注意到): switch(pathname){ case 'tasks': case 'activity': case 'notes': key = 'noanimate'; break; default: key = pathname; break; } 现在,从/ project到/ project / tasks的重定向实现了从’project’到’noanimate’的双重转换,我不确定我是不是想写一些更糟糕的字符串操作来获取最后一个或倒数第二个词,取决于它是’tasks’/’activity’/’notes’还是任何其他字符串. 是否有更好的解决方案,或者是……我们是如何做事的? 解决方法
我有同样的问题,所以我写了自己的解决方案:
switch-css-transition-group
安装后,您可以将代码重写为: import SwitchCSSTransitionGroup from 'switch-css-transition-group' <SwitchCSSTransitionGroup location={this.props.location} transitionName="zoom" transitionEnterTimeout={200} transitionLeaveTimeout={200}> <Route path={this.props.match.url+"/tasks/:task_id"} component={SingleTask} key={'none'} /> <Route slug={this.props.match.params.project_slug} path={this.props.match.url+"/"} render={(params) => ( <ProjectIndex {...params} slug={this.props.match.params.project_slug} /> )} key={'none'} /> </SwitchCSSTransitionGroup> 它基本上抛出这个“Switch”内的所有路由,并使用matchPath函数识别某些路由是否正确匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 如何将函数调用转换为MethodCallExpression
- cocos3.x导出自定义类到Lua以及手动绑定要回调的函数
- 常用正则表达式
- 若请求数据大而且处理时间长,为了防止页面load timeout,可
- reactjs – 在react.js中实现HTML实体解码
- Oracle Trigger Typical Examples
- c – 如何编写接受\u0026\u0026和const&both的
- dwr3与struts2整合,实现服务器端推送技术,实现多人聊天功
- Flex企业应用开发实战学习笔记(一)
- ruby-on-rails – 如何告诉TextMate在“转到文件”中忽略我