#arrays #reactjs #apply #eslint
#массивы #reactjs #применить #eslint
Вопрос:
Я изучаю react и не понимаю, как это исправить. Из этого источника
Я смотрю в деталях правила для этого правила:
Используйте оператор распространения вместо ‘.apply ()’.
Но я пытался, но это никогда не работает, чтобы переформатировать этот код в соответствии с этим правилом:
renderPages() {
const { pdf, containerWidth, zoom } = this.state;
const { disableVisibilityCheck } = this.props;
if (!pdf) return null;
const pages = Array.apply(null, { length: pdf.numPages });
return pages.map((v, i) => (
<PDFPage
index={i 1}
key={`pdfPage_${uniqueId()}`}
pdf={pdf}
containerWidth={containerWidth}
zoom={zoom * INCREASE_PERCENTAGE}
disableVisibilityCheck={disableVisibilityCheck}
/>
));
}
Комментарии:
1. Спасибо @TasosBu приятно знать. Я отлаживаю и вижу, что
const pages
получаю число 1, потому что в PDF есть одна страница2. Я был неправ @Торд Ларсен! Он наследует его от прототипа функции! Вы должны создать новый массив с
const pages = new Array(pdf.numPages)
3. Вторым параметром
Array.apply
должен быть массив. Почему вы предоставляете объект?4. Это файл , в котором находится этот код
Ответ №1:
В сообщении предлагается использовать такое выражение:
const pages = { ...{ length: pdf.numPages }};
Например, следующий код компилируется:
const somePdf = {
numPages: 10,
pageSize: 'A4',
}
const pages = { ...{ length: somePdf.numPages }};
console.log(JSON.stringify(pages))
// returns "{ length: 10}"
Ответ №2:
Я думаю, что это правило не так важно, поэтому, если вы хотите, вы можете просто отключить правило, добавив эту строку в свои правила в eslintrc.js
файле:
'rules': {
...
'prefer-spread': ['off']
}