componentDidMount(){
window.addEventListener('hashchange', this.routerEvent);
}
componentWillUnmount(){
window.removeEventListener('hashchange',this.routerEvent);
}
routerEvent = (e)=>{
// e.target.location.hash.replace("#","")
// 去掉#就能获取即将跳转的那个路由的url了
}
Tips:addEventListener之后一定要remove,否则跳转路由后,原有的事件又没消除,
会导致注册了越来越多的事件;
另外,removeEventListener的第二个参数指向的函数必须要跟addEventListener传入的函数是同一个函数(这点非常容易错)
这种方式还有种缺点,它只监听到了hash的变化,
而如果是#aaa?page=1跳到了#aaa?page=2,监听不到;
componentDidMount(){
this.props.history.listen(route => {
console.log(route); // 这个route里面有当前路由的各个参数信息
});
}
但是,发现,这个history.listen,在组件销毁的时候并不会销毁,事件仍然存在。
如果多次进入同一个路由,这个componentDidMount重复触发,listen重复绑定,跟addEventListener差不多了,
而也没有找到removeEventListener方法。。。
打印一下this.props.history
console.log(this.props.history)
我们可以看到,有listen方法,但是却没有找到解绑的方法;
通过百度没有找到方法,文档里面也没写怎么解绑,
一筹莫展之际,那只能用最后一个方法:翻源码。
说干就干,找到了/react-router/cjs/react-router.js
到这里我们可以推测,
this.props.history.listen()这个函数执行之后,返回值为一个unlisten函数,
unlisten就是listen的解绑函数!
于是代码变成了这样
let UNLISTEN;
class Client extends React.Component {
...,
componentDidMount(){
// UNLISTEN变量用来接收解绑函数
UNLISTEN = this.props.history.listen(route => {
console.log(route);
});
}
componentWillUnmount(){
UNLISTEN && UNLISTEN(); // 执行解绑
}
}
不使用动态语言php,java等,直接通过js获取链接中传递的get数据的方法总结。javascript可以获取当前页面的url 只要对获取下来的url进行简单地解析即可。
做一个短链接生成器,可以将一个长链接缩短成一个短链接。就是把普通网址,转换成比较短的网址。好处不言而喻。短、字符少、美观、便于发布、传播。
在浏览器地址栏输入URL,浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤,如果资源未缓存,发起新请求,如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证...
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结。window.location.href(设置或获取整个 URL 为字符串),window.location.protocol(设置或获取 URL 的协议部分)
相对路径就是相对于当前文件的路径;可以防止被抄袭,如果网页位置改变,里面的链接还是指向正确的URL。在编码编写时不方便使用绝对路径,因为链接应该指向真正的域名,而不是开发站点。
一次接触qs这个库,是在使用axios时,用于给post方法编码,在使用过程中,接触到了一些不同的用法,写在这里分享一下:qs.parse、qs.stringify、排序、指定数组编码格式、处理json格式的参数
什么是短链接 ?就是把普通网址,转换成比较短的网址。好处不言而喻:短、字符少、美观、便于发布、传播。所以如何来优雅的生成足够短的字符串唯一ID呢?
window对象的URL对象是专门用来将blob或者file读取成一个url的。这个url可以用在html的任何可以使用url的地方,比如img的src ; audio/video的src和source标签等。
利用url访问远程的文件、图片、视频时有时需要请求前判断url地址是否有效。利用PHP自带的函数get_headers(),利用http返回值是否存在200状态,来判断url地址是否有效。
URL的格式由下列三部分组成:协议(或称为服务方式);存有该资源的主机IP地址(有时也包括端口号);主机资源的具体地址,如目录和文件名等。URI,统一资源标识符:主机名。存放资源的自身的名称,由路径表示
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!