Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Reactjs 如何处理值为number类型的受控输入元素中的NaN_Reactjs_Typescript_Parseint_React Tsx - Fatal编程技术网

Reactjs 如何处理值为number类型的受控输入元素中的NaN

Reactjs 如何处理值为number类型的受控输入元素中的NaN,reactjs,typescript,parseint,react-tsx,Reactjs,Typescript,Parseint,React Tsx,在下面的代码片段这样的情况下,如果状态类型为number,我应该如何处理NaN 服务器发送一个对象数组: interface MyInterface {id:number, amount:number, score:number} // The received data is of type MyInterface[] 因此,这里的空输入将导致NaN,警告:收到了值属性的NaN。如果需要,请将该值转换为字符串。 以防我检查情况 isNaN(parseInt(e.target.value))我

在下面的代码片段这样的情况下,如果状态类型为
number
,我应该如何处理
NaN

服务器发送一个对象数组:

interface MyInterface {id:number, amount:number, score:number}
// The received data is of type MyInterface[]
因此,这里的空输入将导致
NaN
警告:收到了
属性的NaN。如果需要,请将该值转换为字符串。

以防我检查情况
isNaN(parseInt(e.target.value))
我应该用什么更新状态?通常,在这种情况下,如何使输入为空

const App:React.FC<Props>=(props:Props)=> {
  const [data, setData] = React.useState<MyInterface[]>(props.values);

  const handleChange = (e: ChangeEvent<HTMLInputElement>,id:number) => {
    const amount = parseInt(e.target.value, 10);
    const temp:MyInterface[] = data.map(d => d.id === id? {...d,amount} : d)
    setData(temp);
  };

  const upload = ()=> { /* POST the state array to server */}

  return (
      <>
        {data.map(d=> (
         <div>
           <input value={d.amount} onChange={handleChange} />
           <button onClick={upload}/>
         </div>
        ))}  
      </>
 );
}
const-App:React.FC=(道具:道具)=>{
const[data,setData]=React.useState(props.values);
常量handleChange=(e:ChangeEvent,id:number)=>{
const amount=parseInt(即target.value,10);
常量temp:MyInterface[]=data.map(d=>d.id==id?{…d,amount}:d)
设置数据(温度);
};
const upload=()=>{/*将状态数组发布到服务器*/}
返回(
{data.map(d=>(
))}  
);
}

这真让人讨厌。我们自己解决了这个问题,我能想到的唯一解决方案是禁止向用户显示这个特定错误。

将状态更改为字符串,在
handleChange
中添加一个条件以允许空值。什么?!状态是数字类型,它是从开放式API自动生成的,我无法更改它,糟糕的是,对我来说,状态类型更改可以解决问题,这就是我在这里提问的原因。状态是在组件中定义的,不清楚“从开放式API自动生成”是什么意思。我建议更新问题,解释为什么更改状态类型对您不起作用。@AlexeyLebedev状态来自何处并不重要,它定义为
number
,我不是在搜索更改状态解决方案,对字符串的更改非常明显,因此不需要在此处提出问题您也可以将
NaN
呈现为空字符串:
value={isNaN(value)?'':value}
,但我认为更改状态类型更干净。