Я получаю аргумент ошибки строки типа или undefined не может быть назначен параметру строки типа с помощью машинописного текста и реагировать
Ниже мой код,
function List({items}: Props) {
const [activeindex, setActiveindex] = React.useState<string>();
return (
items.map((item: any) => {
<AddButton setActiveIndex={setActiveIndex} itemId={item.id}/>
}
);
}
interface AddButtonProps {
setActiveIndex: any;
itemId?: string;
}
function AddButton ({setActiveIndex, itemId}: AddButtonProps){
const {toggleDrawing} = useDrawing();
const handleClick = (itemId) => {
setActiveIndex(itemId);
toggleDrawing(itemId); //error here
}
return (
<Button onClick={handleClick}/>
);
);
function useDrawing () {
const [editableItemId, setEditableItemId] = React.useState<string>();
const toggleDrawing = React.useCallback(async (itemId: string) => {
if (isDrawing && editableItemId === itemId) {
cancelDrawing();
} else if (isDrawing) {
cancelDrawing();
setEditableItemId(itemId);
} else {
setEditableWorkAreaId(itemId);
}
},
[isDrawingPolygon, editableItemId, cancelDrawing]
);
}
Я не уверен, почему получаю эту ошибку. может кто-нибудь помочь мне исправить это. Спасибо.
0
saritha
21 Авг 2020 в 04:56
2 ответа
Лучший ответ
Ваш интерфейс определяет itemId?: string;
и строку или undefined, но для вызова функции нужна строка.
Используйте либо
if (itemId) {
toggleDrawing(itemId);
}
Или
toggleDrawing(itemId || '');
Или
toggleDrawing(itemId as string);
0
Adrian Brand
21 Авг 2020 в 02:07
Попробуй так;)
const toggleDrawing = React.useCallback(async (itemId: string | undefined) => {
if (isDrawing && editableItemId === itemId) {
cancelDrawing();
} else if (isDrawing) {
cancelDrawing();
setEditableItemId(itemId);
} else {
setEditableWorkAreaId(itemId);
}
},[])
1
Liu Lei
21 Авг 2020 в 02:40
Похожие вопросы
Новые вопросы
reactjs
React - это библиотека JavaScript для создания пользовательских интерфейсов. Он использует декларативную компонентную парадигму и стремится быть одновременно эффективным и гибким.