Свойство не существует для типа ' DetailedHTMLProps, HTMLDivElement>' с React 16
поскольку React 16 теперь позволяет пользовательские атрибуты DOM, я попытался использовать это в моем коде Typescript:
import * as React from 'react';
<div className="page" size="A4">
</div>
но получить это сообщение об ошибке:
ошибка TS2339: свойство "размер" не существует для типа 'DetailedHTMLProps, HTMLDivElement>'.
этой нить предлагает сделать module augmentation
, поэтому я попробовал так:
import * as React from 'react';
declare module 'react' {
interface HTMLProps<T> {
size?:string;
}
}
та же ошибка сообщение.
наконец, я также попытался объявить page
как новый HTML-тег:
declare global {
namespace JSX {
interface IntrinsicElements {
page: any
}
}
}
<page className="page" size="A4">
</page>
он избавляется от сообщения об ошибке, но size
атрибут полностью игнорируется в скомпилированном коде, и я заканчиваю:
<page className="page">
</page>
в идеале, последнее является моим предпочтительным решением. Я хотел бы использовать size
пользовательский атрибут рядом с page
пользовательский тег.
tsconfig.js
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"allowUnusedLabels": true,
"allowUnreachableCode": true
}
}
1 ответов
HTML поддерживает тип атрибута data-* для пользовательских атрибутов. Вы можете прочитать об этом больше здесь.
определение и использование атрибуты data-* используются для хранения пользовательских данные, закрытые для страницы или приложения.
данные-* атрибуты дают нам возможность вставлять пользовательские данные атрибуты для всех элементов HTML.
сохраненные (пользовательские) данные затем могут использоваться в JavaScript страницы для создать более привлекательный пользовательский интерфейс (без каких-либо вызовов Ajax или запросы базы данных на стороне сервера).
атрибуты data-* состоят из двух частей:
- имя атрибута не должно содержать прописных букв и должно быть хотя бы одним символом после префикса "data-"
- значением атрибута может быть любая строка
Примечание: пользовательские атрибуты с префиксом "data -" будут полностью игнорируется агентом пользователя.
вместо того, чтобы просто использовать size="A4"
можно использовать data-size="A4"
пример
<div className="page" data-size="A4">
// ....
</div>