最近遇到了一个比较麻爪的问题,就是正则关键词需要靠地址栏传参,但是url的参数解析机制是根据&符号进行分割的,而我传递的参数里面又有可能有&这个字符。就会导致数据传输不完全
在调研了许久之后
发现了两个方法
encodeURIComponent
数据保护
decodeURIComponent
数据解构
首先通过encodeURIComponent对有&符号的数据进行编码转换
然后在获取数据哪里进行编码解构,这样就可以完美的获取到对应的数据啦
以下是具体代码
<Link
to={`/tort/keyword-review/keyword-change?keyword=${encodeURIComponent(
record.keyword
)}&id=${record.id}&remark=${record.remark}&start_time=${
record.start_time
}&end_time=${record.end_time}&review_keyword_type=${
record.review_keyword_type
}`}
>
编辑
</Link>
const paramsString = window.location.search
const data: any = {}
const searchParams = new URLSearchParams(paramsString)
for (const [key, value] of searchParams.entries()) {
data[key] = value
}
const [dataSource, setDataSource] = useState([
{
id: Number(data.id) || 0,
keyword: decodeURIComponent(data.keyword) || '',
remark: data.remark || '',
review_keyword_type: Number(data.review_keyword_type) || 0
}
])