如何将正则表达式保存到Redux
存储中?
示例:
我有正则表达式保存在对象中:
const regexes = {
name: /^[a-zA-Z0-9_]*$/
}
将这个对象保存到redux存储后,正则表达式会丢失(解析为空对象):
// Dispatch
dispatch(setRegexes(regexes))
// Redux Dev Tools:
{
name: {}
}
即使将正则表达式作为有效载荷接收到 reducer 中,它也可以:
// Reducer
case 'SET_REGEXES':
console.log(payload.regexes) // {name: /^[a-zA-Z0-9_]*$/}
return {...store, regexes: payload.regexes}
break;
这意味着有效负载很可能是
stringified
到JSON,而 regex丢失了。这有一些解决方法吗?或者我不应该将正则表达式保存到redux中,即使从技术上将正则表达式保存到JavaScript对象中也是有效的。
编辑:我试图实现不需要使用
new RegExp(store.regexes.name)
的情况,我想将实际的正则表达式保存到存储中,因为存储是JavaScript对象。 最佳答案
您可以先通过RegExp的source
属性将其转换为字符串
case 'SET_REGEXES':
const regexsrc = regexes.name.source;
return {...store, regexes: {name: regexsrc}}
break;
或者,如果
regexes
实际上是一个数组,则运行转换每个属性的循环。然后只需执行
new RegExp(str)
进行检索。