【发布时间】:2020-07-10 15:43:33
【问题描述】:
我正在尝试使用 TypeScript 在 React 项目中创建上下文。这是我第一次使用 TypeScript,我遇到了一个错误。我试图创建一些接口来解决这个问题,但我找不到解决这个问题的方法。
这是我的上下文文件:
import React, { createContext, useState, ChangeEvent } from 'react';
interface ITransaction {
name: string;
amount: string;
}
interface ITransactions {
transactionsList: ITransaction[]
}
export const TransactionsContext = createContext({})
export const TransactionsContextProvider: React.FC = ({ children }) => {
const [transactions, setTransactions] = useState<ITransactions[]>([])
const [inputs, setInputs] = useState<ITransaction>({
name: '',
amount: ''
})
const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {
const { name, value } = e.target
setInputs({...inputs, [name]: value })
}
const handleSubmit = (e: ChangeEvent<HTMLInputElement>) => {
e.preventDefault()
setTransactions([...transactions, inputs]) <-- Error here
}
return (
<TransactionsContext.Provider value={transactions}>
{children}
</TransactionsContext.Provider>
)
}
我遇到的错误
Argument of type '(ITransaction | ITransactions)[]' is not assignable to parameter of type 'SetStateAction<ITransactions[]>'.
Type '(ITransaction | ITransactions)[]' is not assignable to type 'ITransactions[]'.
Type 'ITransaction | ITransactions' is not assignable to type 'ITransactions'.
Property 'transactionsList' is missing in type 'ITransaction' but required in type 'ITransactions'.
【问题讨论】:
标签: reactjs typescript react-context