Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Redux将我的正则表达式值保存为对象类型_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 为什么Redux将我的正则表达式值保存为对象类型

Javascript 为什么Redux将我的正则表达式值保存为对象类型,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有了最奇怪的行为。我在表单中使用屏蔽输入:react text mask。如何定义屏蔽输入的快速示例: <MaskedInput mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]} className="form-control" placeholder="Enter a phone number" guide={false} id="my

我有了最奇怪的行为。我在表单中使用屏蔽输入:react text mask。如何定义屏蔽输入的快速示例:

<MaskedInput
  mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
  className="form-control"
  placeholder="Enter a phone number"
  guide={false}
  id="my-input-id"
  onBlur={() => {}}
  onChange={() => {}}
/>
{}
onChange={()=>{}
/>
出于许多原因,我将定义保存在Redux状态。并按如下方式使用输入:

<MaskedInput
  placeholder={placeholder} // comes from Redux state
  mask={mask} // comes from Redux state
  className="form-control"
  value={value} // comes from Redux state
  onChange={(e) => handleChange(id, e.target.value)} // triggers action that saves value to Redux
/>
handleChange(id,e.target.value)}//触发将值保存到Redux的操作
/>
问题来自我在Redux中保存掩码。执行如下:

  • 我在状态中注册表单元素。该操作将产生正确的格式:[“(“,/[0-9]/,/\d/,”,“,/\d/,/\d/,/\d/,/\d/,“-”,/\d/,/\d/,/\d/]
  • 我展开以检查Redux存储了什么,它已被修改,但没有我的输入:\

  • 我的输入中断如下:

  • 所以在我看来,redux执行了某种数据规范化、更新和存储的正则表达式值

    你能告诉我为什么会这样吗?如果它是一个特性,而不是一个bug:D,我将重新考虑在Redux中存储我的正则表达式


    提前谢谢

    不能序列化正则表达式文本,也不应在redux中存储函数引用。你的问题是

    JSON.stringify(/\d/) => {}
    

    因此,您的正则表达式文本永远不会被精确序列化

    请提供用于创建带有掩码的新状态的减速机。我认为问题就在这里。引用上面的答案:“不,你不应该在redux存储中存储函数引用。它们是不可序列化的,正如你提到的,状态应该随时可序列化。”
    /\d/
    这是一个不可序列化的正则表达式
    JSON.stringify(/\d/)
    返回
    {}
    。感谢您的回答。我现在明白了,哪里出了问题:)但是你能给我一些建议如何克服这个问题吗?可能将id存储到某个本地枚举?然后从那里读面具?