Как избежать 'Eval' в этом компоненте реакции? - PullRequest
1 голос
/ 26 марта 2020

Я использую генератор страниц Gatsby stati c для создания сайта stati c. Я создал компонент, подобный этому:

const Subject = ({data, location, pageContext) => {
    const currentPage = eval("pagecontext.num" + (pageContext.queryfor) + "s")
    return (
        console.log(currentPage) //returns page number as expected
    )
}

Как вы можете видеть, я использую eval для создания переменной, основанной на некоторых строках и другой переменной. Код работает отлично, как и ожидалось, но я получаю предупреждение:

warn ESLintError:
E:\Build\gatsby\src\components\subject.js
warning  eval can be harmful  no-eval

Я немного прочитал о том, как никогда не следует использовать eval, поскольку это опасно. Как я могу избежать использования eval в моем коде? Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Переключиться на скобка :

const Subject = ({data, location, pageContext) => {
    const currentPage = pageContext[`num${pageContext.queryfor}s`])
    return (
        console.log(currentPage) //returns page number as expected
    )
}
0 голосов
/ 26 марта 2020

Просто используйте карту :

let myMap = new Map();
myMap.set("pagecontext.num" + (pageContext.queryfor) + "s", VALUE_OF_THIS_VARIABLE)
...
// then access it like before:
const currentPage = myMap.get("pagecontext.num" + (pageContext.queryfor) + "s")
...