Reactjs 使用Typescript映射对象数组
在我的简单typescript/react应用程序中,当我尝试映射对象数组时,我得到一个错误,即类型“object”上不存在属性“title”Reactjs 使用Typescript映射对象数组,reactjs,typescript,Reactjs,Typescript,在我的简单typescript/react应用程序中,当我尝试映射对象数组时,我得到一个错误,即类型“object”上不存在属性“title” const Todo = () => { const [todos, setTodos] = useState<object[]>([]) const [title, setTitle] = useState<string>('') const [body, setBody] = useState<stri
const Todo = () => {
const [todos, setTodos] = useState<object[]>([])
const [title, setTitle] = useState<string>('')
const [body, setBody] = useState<string>('')
const onSubmit = (e: React.FormEvent<HTMLFormElement>): void => {
e.preventDefault()
const todo = {
title: title,
body: body
}
setTodos([todo, ...todos])
setTitle('')
setBody('')
}
return (
<>
<form onSubmit={onSubmit}>
<input value={title} onChange={e => setTitle(e.target.value)} />
<input value={body} onChange={e => setBody(e.target.value)} />
<button>submit</button>
</form>
todos:
{todos.map((todo) => <div><h3>{todo.title}</h3>
<p>{todo.body}</p></div>)}
</>
);
}
const Todo=()=>{
const[todos,setTodos]=useState([]
const[title,setTitle]=useState(“”)
const[body,setBody]=useState(“”)
const onSubmit=(e:React.FormEvent):void=>{
e、 预防默认值()
常数todo={
标题:标题,,
身体:身体
}
setTodos([todo,…todos])
setTitle(“”)
立根体(“”)
}
返回(
setTitle(e.target.value)}/>
setBody(e.target.value)}/>
提交
待办事项:
{todo.map((todo)=>{todo.title}
{todo.body})}
);
}
它失败,因为您说TODO
是对象[]
,但对象
类型没有与之关联的属性。如果您将其更改为下面的示例,它应该可以工作
const [todos, setTodos] = useState<{title: string, body: string}[]>([])
const[todos,setTodos]=useState([]
为什么要将todos作为object[]?将其更新为anyconst[todos,setTodos]=useState([])
如果不是,我将得到一个类型为“{title:string;body:string;}[]”的错误参数,该参数不能分配给setTodos上的“SetStateAction”类型的参数。