React开发踩坑总结(持续更新)

this迷失

由于React开发的灵活性,在组件属性传递时,操作函数也常常作为属性被传递进去。由于未使用使用箭头函数造成函数在执行时根据上下文确定this指针的值,常常造成this is undefined的问题。

import React, {
    Component } from 'react';

export default Button extends Component {
   
	handleClick = () => {
   
		const {
    onClick } = this.props
		if (onClick) {
   
			onClick()
		}
	}
	render () {
   
		return <button onClick={
   onClick}>确认</button>
	}
}
// onClick作为属性传递是特别需要注意,当函数内部使用this指针的值时,有可能会存在this迷失的问题
DOM XSS

在前端的server进行html文件的拼装时,尤其是需要函数写入script标签的内容时需要特别注意,需要对写入的内容做校验,如果存在html语义标签时可能存在DOM XSS的风险。

const jsContent = fetchFromServer()
// ejs进行内容写入
<script>
window.globalVar = JSON.stringify(jsContent)
</script>
// 此时需要注意如果jsContent包含html语义标签时可能会造成漏洞,如jsContent = {name: '<script>测试漏洞</script>'}, 组装好的html文件放回前端时就会执行报错

// 使用htmlEncode对html语义内容进行encode
const htmlEncode = (html) => {
   
	return html.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值