Реагируйте на машинописный текст, пытаясь изменить состояние объектов массива, что приводит к ошибке

#reactjs #typescript #state

Вопрос:

Я новичок в машинописи и пытаюсь вставить новый объект в массив в состоянии реакции, но получаю следующую ошибку:

 Type '{ name: string; address: string; }[] | null' is not an array type.ts(2461) const info: {  name: string;  address: string; }[] | null  

вот код:

 interface StateProps {  info: {  name: string;  address: string;  }[]; }   function App() {  const [info, setInfo] = useStatelt;StateProps["info"] | nullgt;(null);   const nameHanlder = () =gt; { //the editor highlight ...info as an error  setInfo([...info, { name: "foo", address: "bar" }]);  };   return (  lt;div className="App"gt;  lt;pgt;lt;/pgt;  lt;button onClick={nameHanlder}gt;add namelt;/buttongt;  lt;/divgt;  ); }   

Ответ №1:

info также может быть null , поэтому вы получаете сообщение об ошибке. Вы могли бы проверить, что info это массив.

 const nameHanlder = () =gt; {  if (Array.isArray(info)) {  setInfo([...info, { name: 'foo', address: 'bar' }])  }  }