Переданное состояние от родительского к дочернему и управляемое состояние в дочернем компоненте. Работал, если я установил
any но не с Iform
Сведения об ошибке: Аргумент типа 'IRemark[] | undefined» нельзя присвоить параметру типа «MouseEvent<HTMLElement, MouseEvent>». Тип 'undefined' не может быть назначен типу 'MouseEvent<HTMLElement, MouseEvent>'.ts(2345)
Родитель.tsx
export IDetails {
id?: string
text: string
}
export interface IMasterForm {
details?: IDetails[]
}
const InitialState: IMasterForm = {
details: [
{id: "1234567879", text:"hello world"}
]
}
const Page = () => {
const [details, setDetails] = useState(InitialState.details)
const wrapper= useCallback(
(val: any) => {
setsDetails(val);
},
[setDetails]
);
retrun(
<Details_Form wrapper = {wrapper} details = {details}/>
)
это другой проект, который будет интегрирован в родительский проект
Details_Form.tsx
export IChildDetails {
id?: string
text: string
}
export interface IChildForm {
details?: IChildDetails []
wrapper: React.MouseEventHandler<HTMLElement>
}
//const compOne = ({ wrapper, details} : any) => { //working
const compOne = ({ wrapper, details} : IChildForm ) => {
const [childState, setChildState] = useState(details);
useEffect(() => {
wrapper(childState); //<----- error type undefined not assignable to mosue event html ele
}, [wrapper, childState]);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У вас есть разные типы для функции в родительском и дочернем элементах.
У родителя тип (val: any) => void, а у дочернего — React.MouseEventHandler<HTMLElement>. Очевидно, что MouseEventHandler будет ожидать MouseEvent в качестве аргумента. И вы передаете ему childState, какой id типа IChildDetails[]. Вы должны изменить wrapper: React.MouseEventHandler<HTMLElement> на wrapper: (val: any) => void в интерфейсе IChildForm. wrapper: (val: IChildForm[]) => void тоже должно работать.
пожалуйста, проверьте это stackoverflow.com/questions/74152784/…